MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Corrispondenza a un campo array che contiene qualsiasi combinazione dell'array fornito in MongoDB

Puoi farlo combinando più operatori:

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

Il $elemMatch con il $nin sta trovando i documenti in cui un singolo tags l'elemento non è né 'Rad' né 'Cool', quindi il genitore $not inverte la corrispondenza per restituire tutti i documenti in cui non corrispondevano ad alcun elemento.

Tuttavia, questo restituirà anche documenti in cui tags manca o non contiene elementi. Per escluderli devi aggiungere un qualificatore che assicuri tags ha almeno un elemento:

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