आप इसके लिए स्थितीय ऑपरेटर $ का उपयोग कर सकते हैं। उपरोक्त अवधारणा को समझने के लिए, आइए हम दस्तावेज़ के साथ एक संग्रह बनाते हैं। दस्तावेज़ के साथ संग्रह बनाने की क्वेरी इस प्रकार है -
> 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 की वृद्धि।