स्थितीय ऑपरेटर ($) का उपयोग करना
क्वेरी मानदंड से मेल खाने वाले सरणी तत्व के अंदर फ़ील्ड को अपडेट करने के लिए स्थितीय $ ऑपरेटर का उपयोग करें।
उदाहरण: नेस्टेड सरणी के साथ दस्तावेज़
> db.incrementInNestedArrayDemo.insertOne(
{
"StudentId": 100,
"ProjectDetails": [
{ "ProjectId": 567778888, "TeamSize": 4 },
{ "ProjectId": 67888999, "TeamSize": 2 }
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a6b7b15e86fd1496b38aa") }
डेटा देखना
> db.incrementInNestedArrayDemo.find().pretty();
विशिष्ट नेस्टेड तत्व बढ़ाना
ProjectId 67888999 वाले तत्व का TeamSize 1 से बढ़ाएं:
> db.incrementInNestedArrayDemo.update(
{ "StudentId": 100, "ProjectDetails.ProjectId": 67888999 },
{ $inc: { "ProjectDetails.$.TeamSize": 1 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
सत्यापन
> db.incrementInNestedArrayDemo.find().pretty();
आउटपुट: दूसरा ProjectDetails तत्व अब "TeamSize": 3 दिखाता है (2 से 3)।
व्याख्या:
- क्वेरी
ProjectDetails.ProjectIdका उपयोग करके सरणी में मिलान तत्व ढूंढती है। $अपडेट दस्तावेज़ में उस मिलान तत्व की स्थिति को संदर्भित करता है।$incमान को बढ़ाता है।
नोट: स्थितीय $ केवल पहले मिलान तत्व को अपडेट करता है। एकाधिक मिलान तत्वों को अपडेट करने के लिए (MongoDB 3.6+), फ़िल्टर्ड स्थितीय ऑपरेटर $[ के साथ arrayFilters का उपयोग करें।