sql >> Database >  >> NoSQL >> MongoDB

Overeenkomen met een arrayveld dat elke combinatie van de verstrekte array in MongoDB bevat

U kunt dit doen door meerdere operators te combineren:

db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})

De $elemMatch met de $nin is het vinden van de documenten waar een enkele tags element is niet 'Rad' of 'Cool', en dan is de bovenliggende $not keert de overeenkomst om om alle documenten terug te geven waar die met geen enkel element overeenkwamen.

Dit levert echter ook documenten op waarin tags ontbreekt of bevat geen elementen. Om deze uit te sluiten, moet u een kwalificatie toevoegen die zorgt voor tags heeft ten minste één element:

db.test.find({
    tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
    'tags.0': {$exists: true}
})



  1. MongoDB:kan zoekopdracht niet canonicaliseren:BadValue Projection kan geen combinatie van opname en uitsluiting hebben

  2. sorteer op stringlengte in Mongodb/pymongo

  3. Hoe werkt sorteren in de nieuwe mongodb PECL-extensie?

  4. Hoe correct verbinding maken met Atlas M0 (Free Tier) cluster via Java-stuurprogramma?