MongoDB में शर्ती फील्ड चयन के लिए $ifNull एग्रीगेशन ऑपरेटर का उपयोग करें - यह पहला नॉन-नल मान लौटाता है।
उदाहरण
विभिन्न नल पैटर्न वाले दस्तावेज़ बनाएं:
> db.querySelectDemo.insertOne({"Value1": 10, "Value2": null});
{ "acknowledged" : true, "insertedId" : ObjectId("5cefc0ceef71edecf6a1f6b6") }
> db.querySelectDemo.insertOne({"Value1": null, "Value2": 30});
{ "acknowledged" : true, "insertedId" : ObjectId("5cefc0d7ef71edecf6a1f6b7") }
> db.querySelectDemo.insertOne({"Value1": 60, "Value2": 40});
{ "acknowledged" : true, "insertedId" : ObjectId("5cefc0e2ef71edecf6a1f6b8") }
दस्तावेज़ देखें:
> db.querySelectDemo.find().pretty();
{ "_id" : ObjectId("5cefc0ceef71edecf6a1f6b6"), "Value1" : 10, "Value2" : null }
{ "_id" : ObjectId("5cefc0d7ef71edecf6a1f6b7"), "Value1" : null, "Value2" : 30 }
{ "_id" : ObjectId("5cefc0e2ef71edecf6a1f6b8"), "Value1" : 60, "Value2" : 40 }
$ifNull से पहला नॉन-नल मान चुनें
> db.querySelectDemo.aggregate([
{
$project: {
"Value1": { "$ifNull": ["$Value1", "$Value2"] }
}
}
]);
आउटपुट:
{ "_id" : ObjectId("5cefc0ceef71edecf6a1f6b6"), "Value1" : 10 }
{ "_id" : ObjectId("5cefc0d7ef71edecf6a1f6b7"), "Value1" : 30 }
{ "_id" : ObjectId("5cefc0e2ef71edecf6a1f6b8"), "Value1" : 60 }
व्याख्या:
- पहला दस्तावेज़: Value1=10 (नॉन-नल) → 10 चुना गया
- दूसरा दस्तावेज़: Value1=null, Value2=30 → 30 चुना गया
- तीसरा दस्तावेज़: Value1=60 (नॉन-नल) → 60 चुना गया
$ifNull सिंटैक्स:
{$ifNull: [, , ...]}
पहला नॉन-नल, नॉन-मिसिंग एक्सप्रेशन लौटाता है। सभी नल/मिसिंग हों तो अंतिम एक्सप्रेशन लौटाया जाता है।
संबंधित ऑपरेटर
$cond- यदि/तब/अन्यथा तर्क$switch- एकाधिक केस$coalesce(MongoDB 5.0+) - एकाधिक एक्सप्रेशन में पहला नॉन-नल
उपयोग: डेटा सफाई, डिफ़ॉल्ट मान प्रदान करना, फील्ड फॉलबैक लॉजिक।