2016-07-26 3 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 он начал работать.

Смежные вопросы