Mongodb dapat menangani apa yang Anda inginkan, jika Anda menyimpan objek Anda seperti ini
{ score:2131, attributes: ["attr1", "attr2", "attr3"], ... }
Kemudian kueri berikut akan cocok dengan semua item yang memiliki att1 dan attr2
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] } })
tapi ini tidak cocok
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr4" ] } })
kueri mengembalikan kursor, jika Anda ingin kursor ini diurutkan, tambahkan saja parameter pengurutan ke kueri seperti itu
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] }}).sort({score:1})
Lihat Kueri Lanjutan untuk melihat apa yang mungkin.
Indeks yang sesuai dapat diatur sebagai berikut
db.mycol.ensureIndex({attributes:1, score:1})
Dan Anda bisa mendapatkan informasi kinerja menggunakan
db.mycol.find({ attributes: { $all: [ "attr1" ] }}).explain()
Mongo menjelaskan berapa banyak objek yang dipindai, berapa lama waktu operasi dan berbagai statistik lainnya.