0

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

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" } } )

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

谢谢

4

1 回答 1

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/

于 2015-06-06T12:56:05.947 回答