MongoDB में ऐरे फील्ड को मैच करने के लिए जहां वह प्रदान किए गए ऐरे के किसी भी कॉम्बिनेशन को कंटेन करता हो, $nin के साथ $elemMatch और $not का उपयोग करें।
उदाहरण से समझें
एक कलेक्शन बनाकर डॉक्यूमेंट इन्सर्ट करते हैं:
> db.combinationOfArrayDemo.insertOne({"StudentName": "Larry", "StudentAge": 21, "StudentFavouriteTechnicalSubject": ["C", "Java"]});
> db.combinationOfArrayDemo.insertOne({"StudentName": "Mike", "StudentAge": 23, "StudentFavouriteTechnicalSubject": ["C++", "Java"]});
> db.combinationOfArrayDemo.insertOne({"StudentName": "David", "StudentAge": 22, "StudentFavouriteTechnicalSubject": ["Java"]});
सभी डॉक्यूमेंट देखने के लिए:
> db.combinationOfArrayDemo.find().pretty();
आउटपुट:
अब ऐसे डॉक्यूमेंट खोजें जिनका ऐरे **केवल** ["C++", "Java"] के एलिमेंट से बना हो (यानी कोई एलिमेंट इस सेट के बाहर न हो):
> db.combinationOfArrayDemo.find({StudentFavouriteTechnicalSubject: {$not: {$elemMatch: {$nin: ['C++', 'Java']}}}}).pretty();आउटपुट:
लैरी का ऐरे ["C", "Java"] है - "C" दिए गए सेट ["C++", "Java"] में नहीं है, इसलिए एक्सक्लूड हुआ।
लॉजिक:
$ninसे ऐरे के बाहर के एलिमेंट ढूंढें,$elemMatchसे ऐरे में ऐसे एलिमेंट की उपस्थिति चेक करें,$notसे नेगेट करें = ऐरे के सभी एलिमेंट दिए गए सेट के अंदर हैं।