Sie können dies tun, indem Sie mehrere Operatoren kombinieren:
db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})
Das $elemMatch
mit dem $nin
findet die Dokumente, in denen ein einzelner tags
ist -Element ist weder 'Rad' noch 'Cool', und dann ist das übergeordnete Element $not
kehrt die Übereinstimmung um, um alle Dokumente zurückzugeben, bei denen diese mit keinem Element übereinstimmten.
Dies gibt jedoch auch Dokumente zurück, in denen tags
sind entweder fehlt oder keine Elemente enthält. Um diese auszuschließen, müssen Sie einen Qualifizierer hinzufügen, der tags
sicherstellt hat mindestens ein Element:
db.test.find({
tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
'tags.0': {$exists: true}
})