Bạn có thể thực hiện việc này bằng cách kết hợp nhiều toán tử:
db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})
$elemMatch
với $nin
đang tìm tài liệu trong đó một thẻ tags
phần tử không phải là 'Rad' cũng không phải là 'Cool', và sau đó là phần tử mẹ $not
đảo ngược so khớp để trả về tất cả các tài liệu không khớp với bất kỳ phần tử nào.
Tuy nhiên, điều này cũng sẽ trả về các tài liệu trong đó thẻ tags
bị thiếu hoặc không có phần tử. Để loại trừ những người đó, bạn cần thêm một bộ định lượng đảm bảo các thẻ tags
có ít nhất một phần tử:
db.test.find({
tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
'tags.0': {$exists: true}
})