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}
})