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



我正在使用Mongoose和MongoDB进行一个简单的文本搜索。我有一个叫Todo的模型,我正在搜索我的收藏,它已经被编入了索引。例如,我正在尝试对下面一行中的单词"咖啡"进行文本搜索。

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的问题,但它以前是有效的。

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

最新更新