আপনি এর জন্য অবস্থানগত অপারেটর $ ব্যবহার করতে পারেন। উপরের ধারণাটি বুঝতে, আসুন ডকুমেন্টের সাথে একটি সংগ্রহ তৈরি করি। একটি নথির সাথে একটি সংগ্রহ তৈরি করার প্রশ্নটি নিম্নরূপ -
> 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") }
Find() পদ্ধতির সাহায্যে একটি সংগ্রহ থেকে সমস্ত নথি প্রদর্শন করুন। প্রশ্নটি নিম্নরূপ -
> 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 দ্বারা বৃদ্ধি।