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

MongoDB में वेरिएबल इंडेक्स द्वारा डॉक्यूमेंट में ऐरे कैसे अपडेट करें?

MongoDB में डायनामिक/वेरिएबल इंडेक्स का उपयोग करके ऐरे एलिमेंट अपडेट करना

जब ऐरे इंडेक्स रनटाइम तक ज्ञात नहीं होता (एक वेरिएबल में संग्रहीत), आप अपडेट ऑब्जेक्ट को प्रोग्रामेटिक रूप से डॉट नोटेशन के साथ कुंजी के रूप में इंडेक्स को जोड़कर बना सकते हैं।

सिंटैक्स पैटर्न

var yourIndexVariableName = yourIndexValue;
var anyVariableName = { "$set": {} };
anyVariableName["$set"]["yourFieldName." + yourIndexVariableName] = "yourValue";
db.yourCollectionName.update({ "_id": yourObjectId }, anyVariableName);

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

> db.updateByVariableDemo.insertOne({"StudentSubjects":["MySQL","Java","SQL Server","PL/SQL"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd553c37924bb85b3f4893a") }

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

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

आउटपुट:

{
  "_id" : ObjectId("5cd553c37924bb85b3f4893a"),
  "StudentSubjects" : [ "MySQL", "Java", "SQL Server", "PL/SQL" ]
}

वेरिएबल इंडेक्स के साथ ऐरे एलिमेंट अपडेट करना

> var indexValue = 1;
> var valueToUpdate = { "$set": {} };
> valueToUpdate["$set"]["StudentSubjects." + indexValue] = "MongoDB";
MongoDB
> db.updateByVariableDemo.update(
  { "_id": ObjectId("5cd553c37924bb85b3f4893a") },
  valueToUpdate
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

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

आउटपुट:

{
  "_id" : ObjectId("5cd553c37924bb85b3f4893a"),
  "StudentSubjects" : [ "MySQL", "MongoDB", "SQL Server", "PL/SQL" ]
}

यह कैसे काम करता है

  1. इंडेक्स को एक वेरिएबल में संग्रहीत करें (indexValue = 1)।
  2. एक खाली $set ऑब्जेक्ट बनाएं।
  3. ब्रैकेट नोटेशन का उपयोग करके डायनामिक रूप से कुंजी "StudentSubjects.1" सेट करें।
  4. निर्मित अपडेट ऑब्जेक्ट के साथ अपडेट निष्पादित करें।

आधुनिक विकल्प (MongoDB 4.2+)

एग्रीगेशन पाइपलाइन के साथ updateOne/updateMany का उपयोग करें:

db.collection.updateOne(
  { _id: ObjectId("...") },
  [
    { $set: { "StudentSubjects.1": "MongoDB" } }
  ]
);

यह दृष्टिकोण क्लाइंट-साइड स्ट्रिंग कंस्ट्रक्शन के बिना सीधे पाइपलाइन में डायनामिक फील्ड पथ का समर्थन करता है।

मुख्य बिंदु

  • कुंजी नामों को डायनामिक रूप से बनाने के लिए ब्रैकेट नोटेशन (obj["key"]) का उपयोग करें।
  • यह पैटर्न तब उपयोगी होता है जब इंडेक्स उपयोगकर्ता इनपुट या गणना से आता है।
  • आउट-ऑफ-बाउंड इंडेक्स से बचने के लिए इंडेक्स को मान्य करें।
  1. - MongoDB क्वेरी: इंडेक्स N पर ऐरे ऑब्जेक्ट अपडेट करें

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

  1. - MongoDB में ऐरे के अंदर एलिमेंट्स कैसे अपडेट करें?

    ऐरे के अंदर एलिमेंट्स अपडेट करने के लिए MongoDB में $set का उपयोग करें। नमूना डेटा बनाना (CollegeDetails ऐरे) db.demo494.insertOne( { CollegeDetails : [ { CollegeName : MIT, Fees : 80000 }, { CollegeName : SU, Fees : 90000 } ] } ) अपडेट से पहले दस्तावेज़ देखना db.demo494.find().prett

  1. - MongoDB क्वेरी: नेस्टेड दस्तावेज अपडेट करें

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo595.insertOne({ Information: [ { _id: new ObjectId(), Name:Chris }, { _id:new ObjectId(), Name:Robert } ] }); { acknowledged : true, insertedId : ObjectId(5e93369cfd2d90c177b5bce4) } find() मेथड की मदद से कलेक्शन के सभी