MongoDB में नेस्टेड ऐरे के अंदर किसी फील्ड की वैल्यू इन्क्रीमेंट करने के लिए पोजिशनल ऑपरेटर $ का उपयोग करें।
उदाहरण से समझें
एक कलेक्शन बनाकर नेस्टेड ऐरे वाला डॉक्यूमेंट इन्सर्ट करते हैं:
> db.incrementValueInNestedArrayDemo.insertOne({
"UniqueId": 1,
"StudentDetails": [
{"StudentId": 101, "StudentMarks": 97},
{"StudentId": 103, "StudentMarks": 99},
{"StudentId": 105, "StudentMarks": 69},
{"StudentId": 107, "StudentMarks": 59}
]
});
सभी डॉक्यूमेंट देखने के लिए:
> db.incrementValueInNestedArrayDemo.find().pretty();
आउटपुट:
{ "_id": ..., "UniqueId": 1, "StudentDetails": [ {"StudentId": 101, "StudentMarks": 97}, {"StudentId": 103, "StudentMarks": 99}, {"StudentId": 105, "StudentMarks": 92}, {"StudentId": 107, "StudentMarks": 59} ] }
अब StudentId: 107 वाले एलिमेंट का StudentMarks 1 से इन्क्रीमेंट करने के लिए:
> db.incrementValueInNestedArrayDemo.update(
{UniqueId: 1, "StudentDetails.StudentId": 107},
{$inc: {"StudentDetails.$.StudentMarks": 1}}
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
फिर से चेक करें:
> db.incrementValueInNestedArrayDemo.find().pretty();
आउटपुट:
{ "_id": ..., "UniqueId": 1, "StudentDetails": [ {"StudentId": 101, "StudentMarks": 97}, {"StudentId": 103, "StudentMarks": 99}, {"StudentId": 105, "StudentMarks": 92}, {"StudentId": 107, "StudentMarks": 60} ] }
StudentMarks 59 से 60 हो गया। पोजिशनल $ ऑपरेटर क्वेरी से मैच हुए ऐरे एलिमेंट को रेफर करता है।