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 に答える