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/

Другие вопросы по тегам