MongoDB में, आप $exists
. का उपयोग कर सकते हैं एक विशिष्ट फ़ील्ड वाले दस्तावेज़ों से मिलान करने के लिए तत्व क्वेरी ऑपरेटर।
आप इसका उपयोग उन दस्तावेज़ों से मिलान करने के लिए भी कर सकते हैं जिनमें कोई विशिष्ट फ़ील्ड नहीं है।
आप इसका उपयोग अन्य ऑपरेटरों जैसे $nin
. के संयोजन में भी कर सकते हैं उन दस्तावेज़ों से मिलान करने के लिए जहाँ कोई फ़ील्ड मौजूद है, लेकिन उसमें कोई विशिष्ट मान नहीं है।
उदाहरण
मान लीजिए हमारे पास cats
. नामक संग्रह है जिसमें निम्नलिखित दस्तावेज शामिल हैं:
{ "_id" : 1, "name" : "Scratch", "born" : "March, 2020" } { "_id" : 2, "name" : "Meow", "weight" : 30 } { "_id" : 3, "name" : "Fluffy", "height" : 15 } { "_id" : 4, "name" : "Sox", "weight" : 40 } { "_id" : 5, "name" : null, "weight" : 20 } { "_id" : 6, "height" : 20, "born" : ISODate("2021-01-03T23:30:15.123Z") }
ये दस्तावेज़ उनके पास मौजूद क्षेत्रों के संबंध में थोड़े असंगत हैं। कुछ का weight
होता है फ़ील्ड, अन्य के पास height
है फ़ील्ड, कुछ का born
. है क्षेत्र, आदि
हम $exists
. का उपयोग कर सकते हैं उस संग्रह से दस्तावेज़ वापस करने के लिए ऑपरेटर जिसमें एक विशिष्ट फ़ील्ड है।
उदाहरण:
db.cats.find( { weight: { $exists: true } } )
परिणाम:
{ "_id" : 2, "name" : "Meow", "weight" : 30 } { "_id" : 4, "name" : "Sox", "weight" : 40 } { "_id" : 5, "name" : null, "weight" : 20 }
हम देख सकते हैं कि केवल वे दस्तावेज़ जिनमें weight
. होता है फ़ील्ड लौटा दी जाती है।
वे फ़ील्ड जिनमें null
शामिल हैं
$exists
ऑपरेटर में वे फ़ील्ड शामिल होते हैं जिनमें null
. होता है . यह null
. के बीच भेदभाव नहीं करता है और गैर-null
मान।
उदाहरण:
db.cats.find( { name: { $exists: true } } )
परिणाम:
{ "_id" : 1, "name" : "Scratch", "born" : "March, 2020" } { "_id" : 2, "name" : "Meow", "weight" : 30 } { "_id" : 3, "name" : "Fluffy", "height" : 15 } { "_id" : 4, "name" : "Sox", "weight" : 40 } { "_id" : 5, "name" : null, "weight" : 20 }
हम देख सकते हैं कि दस्तावेज़ 5 लौटा दिया गया था, भले ही उसका name
फ़ील्ड null
है ।
बिना किसी विशिष्ट मान के मौजूद है
आप $exists
. को जोड़ सकते हैं फ़ील्ड वाले दस्तावेज़ लौटाने के लिए अन्य ऑपरेटरों के साथ, लेकिन उस फ़ील्ड में कोई विशिष्ट मान नहीं है।
उदाहरण:
db.cats.find( { weight: { $exists: true, $nin: [20,30] } } )
परिणाम:
{ "_id" : 4, "name" : "Sox", "weight" : 40 }
यदि हम केवल $nin
. का प्रयोग करते तो यह उस परिणाम से भिन्न होता जिसे हमने देखा होता बिना $exists
. के ऑपरेटर।
जो कुछ इस तरह दिखाई देता:
db.cats.find( { weight: { $nin: [20,30] } } )
परिणाम:
{ "_id" : 1, "name" : "Scratch", "born" : "March, 2020" } { "_id" : 3, "name" : "Fluffy", "height" : 15 } { "_id" : 4, "name" : "Sox", "weight" : 40 } { "_id" : 6, "height" : 20, "born" : ISODate("2021-01-03T23:30:15.123Z") }
दस्तावेज़ जिनमें कोई विशिष्ट फ़ील्ड नहीं है
आप $exists: false
. का उपयोग कर सकते हैं दस्तावेज़ वापस करने के लिए जो नहीं निर्दिष्ट फ़ील्ड शामिल करें।
उदाहरण:
db.cats.find( { name: { $exists: false } } )
परिणाम:
{ "_id" : 6, "height" : 20, "born" : ISODate("2021-01-03T23:30:15.123Z") }
इस मामले में, संग्रह के एक दस्तावेज़ में name
. नहीं है फ़ील्ड.
एकाधिक फ़ील्ड की जांच करें
आप कई क्षेत्रों को अल्पविराम से अलग करके उनके अस्तित्व की जांच कर सकते हैं।
उदाहरण:
db.cats.find( {
name: { $exists: true },
height: { $exists: true }
} )
परिणाम:
{ "_id" : 3, "name" : "Fluffy", "height" : 15 }
यह उदाहरण उन सभी दस्तावेज़ों को लौटाता है जिनमें name
. दोनों शामिल हैं फ़ील्ड और एक height
फ़ील्ड.