MongoDB में पोजिशनल $ ऑपरेटर का उपयोग करके नेस्टेड ऐरे एलिमेंट को अपडेट करना
MongoDB में किसी ऐरे के भीतर विशिष्ट दस्तावेज़ को उसके ID द्वारा खोजकर अपडेट करने के लिए पोजिशनल $ ऑपरेटर का उपयोग किया जाता है। यह ऑपरेटर क्वेरी से मेल खाने वाले ऐरे के पहले एलिमेंट की पहचान करता है।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.demo49.insertOne(
{
"Name": "David",
"Details": [
{ "_id": "D1234", "Subject": "MySQL" },
{ "_id": "E234", "Subject": "Java" },
{ "_id": "F456", "Subject": "Python" }
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e270a77cfb11e5c34d89902") }
दस्तावेज़ देखना
>> db.demo49.find();
आउटपुट:
{ "_id" : ObjectId("5e270a77cfb11e5c34d89902"), "Name" : "David", "Details" : [ { "_id" : "D1234", "Subject" : "MySQL" }, { "_id" : "E234", "Subject" : "Java" }, { "_id" : "F456", "Subject" : "Python" } ] }
ऐरे एलिमेंट को ID द्वारा अपडेट करना
> db.demo49.update(
{"Details._id": "E234"},
{$set: {"Details.$.Subject": "MongoDB"}},
false,
true
)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
अपडेट के बाद दस्तावेज़ देखना
>> db.demo49.find();
आउटपुट:
{ "_id" : ObjectId("5e270a77cfb11e5c34d89902"), "Name" : "David", "Details" : [ { "_id" : "D1234", "Subject" : "MySQL" }, { "_id" : "E234", "Subject" : "MongoDB" }, { "_id" : "F456", "Subject" : "Python" } ] }
मुख्य बिंदु:
Details._id: "E234"- ऐरे में इस ID वाले एलिमेंट को खोजता हैDetails.$.Subject-$पोजिशनल ऑपरेटर मेल खाने वाले ऐरे एलिमेंट को संदर्भित करता है- केवल पहला मेल खाने वाला एलिमेंट अपडेट होता है
- एकाधिक मेल खाने वाले एलिमेंट्स के लिए
arrayFiltersके साथupdateMany()का उपयोग करें (MongoDB 3.6+)