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