このようにオブジェクトを保存した場合、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 は、スキャンされたオブジェクトの数、操作にかかった時間、およびその他のさまざまな統計について説明します。