Vous pouvez le faire en combinant plusieurs opérateurs :
db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})
Le $elemMatch
avec le $nin
trouve les docs où un seul tags
l'élément n'est ni 'Rad' ni 'Cool', puis le parent $not
inverse la correspondance pour renvoyer tous les documents où cela ne correspondait à aucun élément.
Cependant, cela renverra également les documents où tags
est manquant ou ne contient aucun élément. Pour les exclure, vous devez ajouter un qualificatif qui garantit les tags
a au moins un élément :
db.test.find({
tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
'tags.0': {$exists: true}
})