Puede hacer esto combinando múltiples operadores:
db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})
El $elemMatch
con el $nin
es encontrar los documentos donde un solo tags
el elemento no es ni 'Rad' ni 'Cool', y luego el padre $not
invierte la coincidencia para devolver todos los documentos en los que no coincidieron con ningún elemento.
Sin embargo, esto también devolverá documentos donde tags
falta o no tiene elementos. Para excluirlos, debe agregar un calificador que asegure tags
tiene al menos un elemento:
db.test.find({
tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
'tags.0': {$exists: true}
})