0

MongoDB で次のクエリを使用しようとしています。
1) db.products.createIndex({ name: "text",category.name':"text"})
これはインデックスを作成します。

2)私のクエリは
db.products.find({$text:{$search:"Sun moon Tapestry"}})
で、これは太陽、月、およびタペストリーに従ってデータをもたらします。

3)しかし、私はこのようなデータを取得したい。
      a)最初に完全一致のすべてのデータ行 Sun moon Tapestry
      b)その後、Sun、moon、および Tapestry が表示されます

(注: DB 呼び出しは 1 回である必要があります)

4

1 に答える 1

1

一致する textScore を使用して、結果セットを並べ替えることができます。

db.products
       .find({ $text : { $search : "Sun moon Tapestry" } }, { score: { $meta: 'textScore' } })
       .sort({score:{$meta: "textScore"}})

name2 つのテキスト インデックスがあるため、 との重みも定義できますcategory.namehttps://docs.mongodb.com/v3.2/tutorial/control-results-of-text-search/

PS:Angularjsに関連するものは何もありません

編集:Mongooseを使用する場合、クエリは同じままで、モデルにクエリを実行する必要があります

YourProduct
       .find({ $text : { $search : "Sun moon Tapestry" } }, { score: { $meta: 'textScore' } })
       .sort({score:{$meta: "textScore"}})
       .exec(function (err, data) {
            if (err)
                res.json(err);
            else {
                res.json(data)
            }
        });

角度統合の場合、$http https://docs.angularjs.org/api/ng/service/$httpを使用して ajax 呼び出しを行うサービスを作成できます。

于 2016-12-07T13:41:50.213 に答える