Mongodb kan håndtere, hvad du vil, hvis du opbevarede dine genstande sådan her
{ score:2131, attributes: ["attr1", "attr2", "attr3"], ... }
Så vil følgende forespørgsel matche alle de elementer, der har att1 og attr2
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] } })
men dette vil ikke matche det
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr4" ] } })
forespørgslen returnerer en markør, hvis du ønsker, at denne markør skal sorteres, skal du bare tilføje sorteringsparametrene til forespørgslen sådan
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] }}).sort({score:1})
Tag et kig på Avancerede forespørgsler for at se, hvad der er muligt.
Passende indekser kan opsættes som følger
db.mycol.ensureIndex({attributes:1, score:1})
Og du kan få oplysninger om ydeevne ved hjælp af
db.mycol.find({ attributes: { $all: [ "attr1" ] }}).explain()
Mongo forklarer, hvor mange objekter der blev scannet, hvor lang tid operationen tog og forskellige andre statistikker.