Mongodb kan aan wat je wilt, als je je objecten op deze manier hebt opgeslagen
{ score:2131, attributes: ["attr1", "attr2", "attr3"], ... }
Dan komt de volgende zoekopdracht overeen met alle items die att1 en attr2 hebben
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] } })
maar dit komt niet overeen
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr4" ] } })
de query retourneert een cursor, als je wilt dat deze cursor wordt gesorteerd, voeg dan de sorteerparameters toe aan de query, zoals zo
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] }}).sort({score:1})
Bekijk Geavanceerde zoekopdrachten om te zien wat er mogelijk is.
Passende indexen kunnen als volgt worden ingesteld
db.mycol.ensureIndex({attributes:1, score:1})
En u kunt prestatie-informatie krijgen met
db.mycol.find({ attributes: { $all: [ "attr1" ] }}).explain()
Mongo legt uit hoeveel objecten zijn gescand, hoe lang de operatie duurde en verschillende andere statistieken.