Meteor.publish() - как получить документы свободным текстом
Я пытаюсь получить документы по свободному тексту. Эта часть, которая получает данные по полю, работает нормально и возвращает данные:
Meteor.publish("messages", function(){
return Messages.find({ discussion_id: "discus_id_87" });
});
Этот не работает:
Meteor.publish("messages", function(){
return Messages.find({ $text: { $search: "Some text" } });
});
Возвращает ОШИБКУ:
Error: Exception while polling query {"collectionName":"messages","selector":{"$text":{"$search":"Some text"}},"options":{"transform":null}}: Unable to execute query: error processing query: ns=meteor.messages limit=0 skip=0
Это пример из текста mongoDB $
db.articles.find( { $text: { $search: "bake coffee -cake" } } )
Что я делаю не так? Как получить документы по свободному тексту?
Спасибо
1 ответ
Убедитесь, что ваша база данных mongo - версия 2.6. Это относительно новая функция MongoDB.
Также вам необходимо создать индекс:
Meteor.startup(function (){
Messages._ensureIndex({"$**": "text"}, {"name": "searchIndex"});
});
Более подробная информация здесь: http://docs.mongodb.org/manual/tutorial/create-text-index-on-multiple-fields/