Můžete to udělat kombinací více operátorů:
db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})
$elemMatch
pomocí $nin
je hledání dokumentů, kde jeden tags
prvek není ani 'Rad' ani 'Cool' a potom nadřazený $not
invertuje shodu, aby vrátil všechny dokumenty, kde neodpovídaly žádnému prvku.
To však také vrátí dokumenty, kde tags
buď chybí, nebo nemá žádné prvky. Chcete-li je vyloučit, musíte přidat kvalifikátor, který zajistí tags
má alespoň jeden prvek:
db.test.find({
tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
'tags.0': {$exists: true}
})