आप कई ऑपरेटरों को मिलाकर ऐसा कर सकते हैं:
db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})
$elemMatch
$nin
. के साथ उन दस्तावेज़ों को ढूंढ रहा है जहां एक एकल tags
. है तत्व न तो 'रेड' है और न ही 'कूल', और फिर पैरेंट $not
उन सभी दस्तावेज़ों को वापस करने के लिए मिलान को उलट देता है जहां वह किसी भी तत्व से मेल नहीं खाता।
हालांकि, यह उन दस्तावेज़ों को भी लौटाएगा जहां tags
या तो गायब है या इसमें कोई तत्व नहीं है। उन्हें बाहर करने के लिए आपको एक क्वालिफायर जोड़ना होगा जो tags
. सुनिश्चित करता है कम से कम एक तत्व है:
db.test.find({
tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
'tags.0': {$exists: true}
})