2017-08-02 51 views
0

所以我遇到了一个奇怪的问题,我一直没能弄明白。我在猫鼬的架构与约20个按键,我想使用$文本查询在他们5,它看起来像这样:

var mySchema = new mongoose.Schema({ 
    firstkey:{type: String, index: true}, 
    secondkey:{type:String,index: true}, 
    thirdkey:{type:String,index: true}, 
    fourthkey:{type:String,index: true}, 
    fifthkey:{type:String,index: true}, 
    sixth:String, 
    seventh:String, 
    .... }); 

mySchema.index=({'firstkey':'text','secondkey':'text','thirdkey':'text','fourthkey':'text','fifthkey':'text'}) 

module.exports = mongoose.model("Schema", mySchema); 

然后在我的路由文件我执行以下查询:

if (req.query.search) { 
    Schema.find({ $text: { $search: req.query.search } }, function (err, allRecords) { 
     if (err) { 
      console.log(err); 
     } else { 
      res.render("records/index", { records: allRecords }); 
     } 
    }); 
} 

我从网页搜索表单得到req.query.search的价值,无论如何,如果我进入形式的话,就是可以在firstkey我得到正确的结果没有问题找到一个值,但如果我进入我知道的一个值存在于其他一个键上,我的查询变成了空的。

任何想法为什么$文本没有看着其他键我试图索引?

回答

0

我能弄明白,在创建模式时创建了一个不同的索引,只有第一个选择的键是罪魁祸首,所以我删除了所有索引并创建了我想要的索引控制台,现在我很好走!