MongoDB में $exists ऑपरेटर का उपयोग करके फ़ील्ड उपस्थिति जांचना
$exists ऑपरेटर उन दस्तावेज़ों से मेल खाता है जिनमें निर्दिष्ट फ़ील्ड मौजूद होता है (मान null सहित)। यह वैकल्पिक फ़ील्ड्स वाले दस्तावेज़ों को फ़िल्टर करने के लिए उपयोगी है।
सैंपल डेटा बनाना
> db.demo247.insertOne({"ClientDetails":[{"ClientFirstName":"Chris","ClientAge":34}]});
> db.demo247.insertOne({"ClientDetails":[{"ClientFirstName":"John","ClientLastName":"Smith","ClientAge":31}]});
> db.demo247.insertOne({"ClientDetails":[{"ClientFirstName":"David","ClientAge":33}]});
> db.demo247.insertOne({"ClientDetails":[{"ClientFirstName":"David","ClientLastName":"Miller","ClientAge":31}]});
सभी दस्तावेज़ देखना
> db.demo247.find().pretty();
आउटपुट:
क्वेरी: ClientLastName फ़ील्ड वाले दस्तावेज़ खोजें
> db.demo247.find({"ClientDetails.ClientLastName":{$exists:true}});आउटपुट (केवल John और David/Miller जिनमें ClientLastName है):
$exists व्यवहार: महत्वपूर्ण नोट्स
{ $exists: true }- फ़ील्ड मौजूद है (मान null भी हो तो भी मिलान करता है){ $exists: false }- फ़ील्ड अनुपस्थित है- null मान वाला फ़ील्ड मौजूद माना जाता है:
{ field: null }पर{ $exists: true }मिलान करता है
नेस्टेड ऐरे में $exists
उदाहरण में ClientDetails.ClientLastName डॉट नोटेशन का उपयोग करता है। यह ऐरे के कम से कम एक एलिमेंट में फ़ील्ड मौजूद होने पर मिलान करता है।
सटीक मिलान के लिए $elemMatch
> db.demo247.find({
ClientDetails: {
$elemMatch: { ClientLastName: { $exists: true } }
}
});
सामान्य गलती
// गलत: null मान की जांच नहीं करता
{ field: { $ne: null } }
// सही: फ़ील्ड उपस्थिति जांचता है
{ field: { $exists: true } }