このようにオブジェクトを保存した場合、Mongodbは必要なものを処理できます
{ score:2131, attributes: ["attr1", "attr2", "attr3"], ... }
次に、次のクエリは、att1とattr2を持つすべてのアイテムに一致します
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] } })
しかし、これはそれに一致しません
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr4" ] } })
クエリはカーソルを返します。このカーソルを並べ替える場合は、次のように並べ替えパラメータをクエリに追加するだけです。
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] }}).sort({score:1})
高度なクエリ をご覧ください 何が可能かを確認します。
適切なインデックスは次のように設定できます
db.mycol.ensureIndex({attributes:1, score:1})
また、
を使用してパフォーマンス情報を取得できます。db.mycol.find({ attributes: { $all: [ "attr1" ] }}).explain()
Mongoは、スキャンされたオブジェクトの数、操作にかかった時間、およびその他のさまざまな統計について説明しています。