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

MongoDB में ऐरे में एम्बेडेड डॉक्यूमेंट में फील्ड कैसे जोड़ें?

MongoDB में पोजिशनल $ ऑपरेटर का उपयोग करके ऐरे में एम्बेडेड डॉक्यूमेंट में फील्ड जोड़ना

जब आप एक ऐरे के अंदर एक विशिष्ट एम्बेडेड डॉक्यूमेंट को अपडेट करना चाहते हैं, तो पोजिशनल $ ऑपरेटर का उपयोग करें जो क्वेरी शर्त से मेल खाने वाले पहले तत्व की पहचान करता है। यह आपको पूरे ऐरे को प्रभावित किए बिना एक नेस्टेड ऑब्जेक्ट में फील्ड जोड़ने/संशोधित करने की अनुमति देता है।

नमूना डेटा बनाना

> db.addAFieldDemo.insertOne(
  {
    "ClientName" : "Larry",
    "ClientCountryName" : "US",
    "ClientOtherDetails" : [
      {
        "ClientProjectName" : "Online Banking System"
      }
    ]
  }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cd44bdc2cba06f46efe9ee8") }

अपडेट से पहले डॉक्यूमेंट देखना

> db.addAFieldDemo.find().pretty();

आउटपुट:

{
  "_id" : ObjectId("5cd44bdc2cba06f46efe9ee8"),
  "ClientName" : "Larry",
  "ClientCountryName" : "US",
  "ClientOtherDetails" : [
    {
      "ClientProjectName" : "Online Banking System"
    }
  ]
}

एम्बेडेड डॉक्यूमेंट में फील्ड जोड़ना

$elemMatch का उपयोग करके ऐरे तत्व का पता लगाएं और पोजिशनल $ के साथ isMarried फील्ड जोड़ें:

> db.addAFieldDemo.update(
  { ClientOtherDetails: { $elemMatch: { "ClientProjectName" : "Online Banking System" } } },
  { $set : { 'ClientOtherDetails.$.isMarried' : true } },
  true
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

परिणाम वेरिफाई करना

> db.addAFieldDemo.find().pretty();

आउटपुट:

{
  "_id" : ObjectId("5cd44bdc2cba06f46efe9ee8"),
  "ClientName" : "Larry",
  "ClientCountryName" : "US",
  "ClientOtherDetails" : [
    {
      "ClientProjectName" : "Online Banking System",
      "isMarried" : true
    }
  ]
}

मुख्य अवधारणाएं

  • $elemMatch - एक ही ऐरे तत्व के भीतर मल्टीपल शर्तों को निर्दिष्ट करता है।
  • पोजिशनल $ ऑपरेटर - क्वेरी शर्त से मेल खाने वाले ऐरे में पहले तत्व को संदर्भित करता है।
  • अपडेट में तीसरा पैरामीटर (true) - यदि कोई डॉक्यूमेंट मेल नहीं खाता तो अपसर्ट सक्षम करता है (वैकल्पिक)।

सर्वोत्तम अभ्यास

  • जब ऐरे तत्व ऑब्जेक्ट्स हों और आप एक विशिष्ट ऑब्जेक्ट को इसकी सामग्री के आधार पर लक्षित करना चाहते हैं तो $elemMatch का उपयोग करें।
  • पोजिशनल $ केवल पहले मिलान करने वाले तत्व को अपडेट करता है; सभी मिलान करने वाले तत्वों को अपडेट करने के लिए, एग्रीगेशन पाइपलाइन के साथ updateMany और $set + $map का उपयोग करें (MongoDB 4.2+ में)।
  1. MongoDB क्वेरी: आईडी को सरणी फ़ील्ड मान से बाहर कैसे करें MongoDB क्वेरी: आईडी को सरणी फ़ील्ड मान से बाहर कैसे करें

    इसके लिए $not के साथ $in ऑपरेटर का उपयोग करें। आइए एक संग्रह बनाते हैं: [ { id: 101, subjectid: [ 102 ] }, { id: 102, subjectid: [ 102 ] } ] सभी दस्तावेज़ देखने के लिए: db.collection.find() आउटपुट: [ { _id: ObjectId(5a934e000102030405000000),

  1. - MongoDB में एम्बेडेड डॉक्यूमेंट की सरणी पर फ़िल्टर क्वेरी कैसे करें?

    इसके लिए MongoDB में aggregate() का उपयोग करें। आइए 3 स्तरों के नेस्टेड डॉक्यूमेंट्स के साथ एक कलेक्शन बनाते हैं: > db.demo736.insertOne( { _id: 101, details1: [ { details2: [ { details3: { Name: John } } ] } ] } ); { acknowledged : true, insertedId : 101 } > db.demo736.insertOne( { _id: 102,

  1. - मौजूदा MongoDB डॉक्यूमेंट में विशिष्ट डेटाटाइप (सूची, ऑब्जेक्ट) के साथ फील्ड कैसे जोड़ें?

    आप $set का उपयोग कर सकते हैं। आइए एक कलेक्शन बनाते हैं: > db.demo732.insertOne({_id:1,Language:English}); { acknowledged : true, insertedId : 1 } > db.demo732.insertOne({_id:2,Language:Hindi}); { acknowledged : true, insertedId : 2 } find() से सभी डॉक्यूमेंट्स देखें: > db.demo732.find(); आ