Mongo错误:必须有$ meta投影

时间:2018-01-17 14:21:30

标签: javascript node.js mongodb mongoose

对不起,如果这是重复的问题,但我没有找到解决方案。

然而......我正试图在mongodb中进行文字搜索。Like this ($meta)

我为我的收藏中的字段制作了索引,标记为" text"。但我有以下错误:

MongoError: must have $meta projection for all $meta sort keys

以下是代码:

var query = {
    description : {
        $regex : new RegExp('\^\.\*(' + ('abaaba|abadaba|woobydooby') + ')\.\*\$', 'g', 'i')
    }
};
var sort = { score: { $meta: 'textScore' } };
var limit = 50;     

Collection
    .find(query)
    .sort(sort)
    .limit(limit)
    .exec(function (err, records) {
        if (err) {
            console.log(err);
        } else {
            console.log(records);
        }
    }); 

我犯了错误?

MongoDB shell version v3.6.2
Node v. 8.9.4

1 个答案:

答案 0 :(得分:0)

您必须在查询中包含一个得分$ meta项目,如下所示:



var query = {
  description : {
     $regex : new RegExp('\^\.\*(' + ('abaaba|abadaba|woobydooby') + ')\.\*\$', 'g', 'i')
  },
  {
    score : {$meta : "textScore" }
  }
};