Можете да направите това, като комбинирате няколко оператора:
db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})
$elemMatch
с $nin
намира документите, където има единичен tags
елементът не е нито 'Rad', нито 'Cool', а след това родителският $not
инвертира съвпадението, за да върне всички документи, където това не съответства на нито един елемент.
Това обаче също ще върне документи, където tags
или липсва, или няма елементи. За да ги изключите, трябва да добавите квалификатор, който осигурява tags
има поне един елемент:
db.test.find({
tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
'tags.0': {$exists: true}
})