Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में एक फील्ड नल हो तो दूसरी और दोनों न हों तो पहली चुनें

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+) - एकाधिक एक्सप्रेशन में पहला नॉन-नल

उपयोग: डेटा सफाई, डिफ़ॉल्ट मान प्रदान करना, फील्ड फॉलबैक लॉजिक।

  1. - MongoDB क्वेरी: डिस्टिंक्ट सेलेक्ट करें और काउंट करें

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo586.insertOne({ details: [ { Name:Chris, Marks:71 }, { Name:Chris, Marks:61 }, { Name:David, Marks:81 } ] }); { acknowledged : true, insertedId : ObjectId(5e9200fefd2d90c177b5bcc7) } > db.demo586.insertOne({

  1. - MongoDB क्वेरी: फील्ड के रिटर्निंग वैल्यूज को लिमिट करें

    इसके लिए $slice का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo594.insertOne({ id:1, details:[ {Name:Chris,Age:21}, {Name:Bob,Age:20}, {Name:David,Age:23}, {Name:Sam,Age:22} ] }); { acknowledged : true, insertedId : ObjectId(5e9334

  1. - MongoDB में नया फ़ील्ड जोड़कर कीमत को विभाजित करके कन्कैटनेट करना

    $addFields, $map, $divide, $toString और $reduce का उपयोग करके नया फ़ील्ड बनाएं। डेमो डेटा db.demo719.insertOne({ Number:7374644, details : { otherDetails : [ { ProductId :102, ProductPrice : NumberInt(500) }, { ProductId :103, ProductPrice : NumberInt(2000) }