MongoDB में, $ifNull
एक एकत्रीकरण पाइपलाइन ऑपरेटर है जो आपको null
के स्थान पर उपयोग करने के लिए एक मान निर्दिष्ट करने की अनुमति देता है .
जिस तरह से यह काम करता है, आप एक अभिव्यक्ति और एक प्रतिस्थापन अभिव्यक्ति प्रदान करते हैं। यदि अभिव्यक्ति एक गैर-शून्य मान का मूल्यांकन करती है, तो वह अभिव्यक्ति वापस कर दी जाती है। लेकिन अगर व्यंजक एक शून्य मान पर मूल्यांकन करता है, $ifNull
प्रतिस्थापन अभिव्यक्ति का मान लौटाता है।
शून्य मान में अपरिभाषित मानों या अनुपलब्ध फ़ील्ड के उदाहरण शामिल होते हैं।
उदाहरण
मान लीजिए हमारे पास test
. नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:
{ "_id" : 1, "data" : 250 } { "_id" : 2, "data" : -250 } { "_id" : 3, "data" : "Bucket" } { "_id" : 4, "data" : 0 } { "_id" : 5, "data" : ISODate("2021-01-03T23:30:15.100Z") } { "_id" : 6, "data" : null } { "_id" : 7, "data" : Infinity } { "_id" : 8, "data" : -Infinity }
अगर हम $ifNull
. का इस्तेमाल करते हैं, तो यहां बताया गया है कि क्या होता है data
पर ऑपरेटर फ़ील्ड:
db.test.aggregate(
[
{
$project:
{
result: { $ifNull: [ "$data", "Value not provided" ] }
}
}
]
)
परिणाम:
{ "_id" : 1, "result" : 250 } { "_id" : 2, "result" : -250 } { "_id" : 3, "result" : "Bucket" } { "_id" : 4, "result" : 0 } { "_id" : 5, "result" : ISODate("2021-01-03T23:30:15.100Z") } { "_id" : 6, "result" : "Value not provided" } { "_id" : 7, "result" : Infinity } { "_id" : 8, "result" : -Infinity }
हम देख सकते हैं कि केवल एक फ़ील्ड का शून्य मान था और इसलिए, यह केवल वही था जिसने "Value not provided"
लौटाया ।
अपरिभाषित और अनुपलब्ध फ़ील्ड
जैसा कि बताया गया है, अपरिभाषित मान और अनुपलब्ध फ़ील्ड को शून्य मान के रूप में माना जाता है।
मान लीजिए हम अपने संग्रह में निम्नलिखित दस्तावेज़ जोड़ते हैं:
{ "_id" : 9, "data" : undefined } { "_id" : 10, "name" : "Homer" }
इस मामले में, दस्तावेज़ 9 में undefined
है डेटा फ़ील्ड में, लेकिन दस्तावेज़ 10 में data
भी नहीं है फ़ील्ड.
यहां बताया गया है कि जब हम $ifNull
. लागू करते हैं तो क्या होता है उन दस्तावेज़ों के लिए:
db.test.aggregate(
[
{ $match: { _id: { $in: [ 9, 10 ] } } },
{
$project:
{
result: { $ifNull: [ "$data", "Value not provided" ] }
}
}
]
)
परिणाम:
{ "_id" : 9, "result" : "Value not provided" } { "_id" : 10, "result" : "Value not provided" }