排序$ text搜索分数时出现Mongoose错误

时间:2016-07-26 19:07:40

标签: mongodb mongoose

我正在使用Mongoose和MongoDB进行简单的文本搜索。我有一个名为Todo的模型,我正在搜索已编入索引的集合。例如,我正在尝试在下面的行中对“coffee”一词进行文本搜索。

Todo.find( 
    { $text: { $search: "coffee" }}, 
    { score: { "$meta": "textScore" }})
.sort( { score: { "$meta": "textScore" }})
.limit(20);

这会导致以下错误:

TypeError: Invalid sort value: {score: [object Object] }

错误指向我放在上面的行。我确定这是导致问题的排序方法,因为当我删除查询的那部分时,我能够得到未排序的结果。

使这个问题更令人困惑的是我在同一个集合中通过robomongo运行完全相同的查询,并且它在那里工作。

db.todos.find( 
    {$text: { $search: "coffee" }}, 
    {score: { "$meta": "textScore" }})
.sort({score: { "$meta": "textScore" }})
.limit(20);

这也是MongoDB提供的完全相同的文档。我很确定这是Mongoose的一个问题,但它之前有效。

1 个答案:

答案 0 :(得分:1)

事实证明,这是Mongoose版本的错误。我使用的是3.6,升级到4.4.20后就开始工作了。