これを行うには、複数の演算子を組み合わせます。
db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})
$elemMatch
$nin
で 単一のtags
が存在するドキュメントを検索しています 要素は「Rad」でも「Cool」でもないため、親の$not
一致を反転して、どの要素とも一致しなかったすべてのドキュメントを返します。
ただし、これにより、tags
のドキュメントも返されます 欠落しているか、要素がありません。それらを除外するには、tags
を保証する修飾子を追加する必要があります 少なくとも1つの要素があります:
db.test.find({
tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
'tags.0': {$exists: true}
})