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

MongoDB में शर्त मिलने पर सरणी तत्व में $push से अपडेट कैसे करें?

MongoDB में सरणी के अंदर शर्त पूरी करने वाले ऑब्जेक्ट में नया फील्ड/मान जोड़ने के लिए पोजिशनल ऑपरेटर $ के साथ $push का उपयोग करें।

उदाहरण

सबडॉक्यूमेंट सरणी वाला दस्तावेज़ बनाएं:

> db.updateArrayElementDemo.insertOne(
  {
    "UserDetails": [
      {"UserName": "Chris", "UserAge": 23}
    ]
  }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5ce9029378f00858fb12e90d") }

दस्तावेज़ देखें:

> db.updateArrayElementDemo.find().pretty();
{ "_id" : ObjectId("5ce9029378f00858fb12e90d"), "UserDetails" : [ { "UserName" : "Chris", "UserAge" : 23 } ] }

UserAge 23 वाले ऑब्जेक्ट में UserCountryName सरणी बनाकर "US" जोड़ें

db.updateArrayElementDemo.update(
  {"UserDetails.UserAge": 23},
  {$push: {"UserDetails.$.UserCountryName": "US"}}
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

परिणाम जांचें:

> db.updateArrayElementDemo.find().pretty();
{ "_id" : ObjectId("5ce9029378f00858fb12e90d"), "UserDetails" : [ { "UserName" : "Chris", "UserAge" : 23, "UserCountryName" : [ "US" ] } ] }

व्याख्या:

  • UserDetails.UserAge: 23 - सरणी में UserAge=23 वाला तत्व ढूंढता है
  • UserDetails.$.UserCountryName - $ मिले हुए सरणी तत्व को संदर्भित करता है
  • $push - उस तत्व में UserCountryName सरणी बनाकर "US" जोड़ता है
  • यदि फील्ड मौजूद नहीं है, तो सरणी के रूप में बनाता है

सीमाएं:

  • $ केवल पहला मिलान करने वाला तत्व अपडेट करता है
  • एकाधिक मिलान के लिए arrayFilters (MongoDB 3.6+) उपयोग करें

arrayFilters विकल्प (अनुशंसित)

db.updateArrayElementDemo.updateOne(
  {},
  {$push: {"UserDetails.$[elem].UserCountryName": "US"}},
  {arrayFilters: [{"elem.UserAge": 23}]}
);

यह अधिक स्पष्ट है, एकाधिक तत्व अपडेट कर सकता है, और नेस्टेड सरणी के लिए बेहतर काम करता है।

  1. - MongoDB क्वेरी: इंडेक्स N पर ऐरे ऑब्जेक्ट अपडेट करें

    MongoDB में ऐरे ऑब्जेक्ट अपडेट करने के लिए update() का उपयोग करें। डॉट नोटेशन का उपयोग भी आवश्यक है। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo489.insertOne( ... { ... ... ...    details : [{ ...       id : 101, ...       "Info1" : { ... &

  1. - MongoDB क्वेरी: ऐरे के केवल एक एलिमेंट को स्लाइस करें

    ऐरे के केवल एक एलिमेंट को स्लाइस करने के लिए, MongoDB में $slice का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo579.insertOne( { _id: 101, details: { FirstName: John }, Marks: [56,78,90,34,45,74] } ); { acknowledged : true, insertedId : 101 }

  1. - MongoDB क्वेरी: एग्रीगेशन में ऐरे एलिमेंट का औसत प्राप्त करें

    ऐरे एलिमेंट्स का औसत प्राप्त करने के लिए, $avg का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo584.insertOne({Marks:[75,50,85,60,80]}); { acknowledged : true, insertedId : ObjectId(5e91d827fd2d90c177b5bcc2) } find() मेथड की मदद से कलेक्शन के सभी दस्तावेज प्रदर्शित करें: >