我试图通过自由文本获取文档。 这一部分,按字段获取数据工作正常并返回数据:
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" } } )
我做错了什么? 如何通过自由文本获取文档?
由于
答案 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/