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

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

MongoDB में सबडॉक्यूमेंट (नेस्टेड ऑब्जेक्ट) की सरणी में विशिष्ट इंडेक्स पर नया फील्ड जोड़ने के लिए डॉट नोटेशन के साथ $set ऑपरेटर का उपयोग करें।

उदाहरण

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

> db.addExtraFieldDemo.insertOne(
  {
    "_id": 1,
    "UserName": "Larry",
    "UserOtherDetails": [
      {"UserCountryName": "US", "UserAge": 23},
      {"UserCountryName": "UK", "UserAge": 24}
    ]
  }
);
{ "acknowledged" : true, "insertedId" : 1 }

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

> db.addExtraFieldDemo.find().pretty();
{ "_id" : 1, "UserName" : "Larry", "UserOtherDetails" : [ { "UserCountryName" : "US", "UserAge" : 23 }, { "UserCountryName" : "UK", "UserAge" : 24 } ] }

पहले सबडॉक्यूमेंट (इंडेक्स 0) में isMarried_ फील्ड जोड़ें

> db.addExtraFieldDemo.update(
  {"_id": 1},
  {"$set": {"UserOtherDetails.0.isMarried_": true}}
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

> db.addExtraFieldDemo.find().pretty();
{ "_id" : 1, "UserName" : "Larry", "UserOtherDetails" : [ { "UserCountryName" : "US", "UserAge" : 23, "isMarried_" : true }, { "UserCountryName" : "UK", "UserAge" : 24 } ] }

व्याख्या:

  • UserOtherDetails.0.isMarried_ - डॉट नोटेशन में सरणी इंडेक्स (0) शामिल करें
  • पहले तत्व (इंडेक्स 0) में नया फील्ड जुड़ा
  • दूसरा तत्व (इंडेक्स 1) अपरिवर्तित रहा

शर्त आधारित अपडेट (arrayFilters - MongoDB 3.6+)

इंडेक्स के बजाय शर्त से पहचानें:

db.addExtraFieldDemo.updateOne(
  {},
  {$set: {"UserOtherDetails.$[elem].isMarried_": true}},
  {arrayFilters: [{"elem.UserCountryName": "US"}]}
);

यह अधिक मजबूत है क्योंकि सरणी क्रम बदलने पर भी सही तत्व अपडेट होता है।

सभी तत्वों में फील्ड जोड़ें

db.collection.updateMany(
  {},
  {$set: {"UserOtherDetails.$[].isActive": true}}
);

$[] ऑल पोजिशनल ऑपरेटर सरणी के सभी तत्वों पर लागू होता है।

  1. - MongoDB में सब-डॉक्यूमेंट द्वारा सब-डॉक्यूमेंट्स फ़िल्टर करें

    इसके लिए, $unwind के साथ aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo583.insert([ { details1: [ { details2: [ { isMarried: true, Name: Chris }, { isMarried: true, Name: Bob }

  1. - MongoDB में दस्तावेज फील्ड मानों से मान घटाएं (TotalPrice - Discount)

    दस्तावेज फील्ड मानों से मान घटाने के लिए, MongoDB aggregate() में $subtract का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo599.insertOne({TotalPrice:250,DiscountPrice:35}); { acknowledged : true, insertedId : ObjectId(5e948192f5f1e70e134e2696) } > db.demo599.insertOne({To

  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(); आ