2016-07-26 54 views
1

我正在做一个简单的文本搜索使用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的一个问题,但之前它工作正常。

回答

1

原来这是Mongoose版本的错误。我使用3.6,升级到4.4.20后开始工作。