Możesz to zrobić, łącząc wiele operatorów:
db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})
$elemMatch
z $nin
jest znalezienie dokumentów, w których pojedynczy tags
element nie jest ani 'Rad', ani 'Cool', a nadrzędny $not
odwraca dopasowanie, aby zwrócić wszystkie dokumenty, w których nie pasowały żadne elementy.
Jednak zwróci to również dokumenty, w których tags
brakuje lub nie zawiera żadnych elementów. Aby je wykluczyć, musisz dodać kwalifikator, który zapewni tags
ma co najmniej jeden element:
db.test.find({
tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
'tags.0': {$exists: true}
})