Meteor.publish() - 如何通过自由文本获取文档

时间:2015-06-06 11:22:06

标签: meteor angular-meteor

我试图通过自由文本获取文档。 这一部分,按字段获取数据工作正常并返回数据:

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 $text

的示例
db.articles.find( { $text: { $search: "bake coffee -cake" } } )

我做错了什么? 如何通过自由文本获取文档?

由于

1 个答案:

答案 0 :(得分:3)

确保您的mongo数据库是2.6版。这是一个相对较新的MongoDB功能。

此外,您需要创建索引:

Meteor.startup(function (){
    Messages._ensureIndex({"$**": "text"}, {"name": "searchIndex"}); 
});

此处有更多信息:http://docs.mongodb.org/manual/tutorial/create-text-index-on-multiple-fields/