आप नीचे दिए गए स्टेटमेंट की मदद से MongoDB में एक्जैक्ट एलिमेंट ऐरे में अपडेट कर सकते हैं। सिंटैक्स इस प्रकार है:
{"yourArrayDocumentName.$.yourNestedArrayDocument.yourPosition":"yourValue"}}
उपरोक्त सिंटैक्स को समझने के लिए, आइए कुछ डॉक्यूमेंट्स के साथ एक कलेक्शन बनाएं। डॉक्यूमेंट के साथ कलेक्शन बनाने की क्वेरी इस प्रकार है:
> db.updateExactField.insertOne({"ActorId":1,"ActorDetails":[{"ActorName":"Johnny Depp","MovieList": ["The Tourist","Public Enemy"]},
{"ActorName":"Chris Evans","MovieList":["Captain America","Avengers"]}]});
अब आप find() मेथड की मदद से कलेक्शन से डॉक्यूमेंट्स प्रदर्शित कर सकते हैं। क्वेरी इस प्रकार है:
> db.updateExactField.find().pretty();
निम्नलिखित आउटपुट है:
{ "_id" : ObjectId("5c6d7f63f2db199c1278e7f1"), "ActorId" : 1, "ActorDetails" : [
{ "ActorName" : "Johnny Depp", "MovieList" : [ "The Tourist", "Public Enemy" ] },
{ "ActorName" : "Chris Evans", "MovieList" : [ "Captain America", "Avengers" ] }
] }
केस 1: यहां, एक्जैक्ट ऐरे एलिमेंट्स यानी 3rd पोजिशन के साथ अपडेट करें, जो इंडेक्स 2 है क्योंकि ऐरे 0 से शुरू होता है। क्वेरी इस प्रकार है:
> db.updateExactField.update(
{"ActorDetails.ActorName":"Chris Evans"},
{$set: {"ActorDetails.$.MovieList.2":"Avengers:Infinity War"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
आइए find() की मदद से कलेक्शन से डॉक्यूमेंट प्रदर्शित करें। क्वेरी इस प्रकार है:
> db.updateExactField.find().pretty();
निम्नलिखित आउटपुट है:
{ "_id" : ObjectId("5c6d7f63f2db199c1278e7f1"), "ActorId" : 1, "ActorDetails" : [
{ "ActorName" : "Johnny Depp", "MovieList" : [ "The Tourist", "Public Enemy" ] },
{ "ActorName" : "Chris Evans", "MovieList" : [ "Captain America", "Avengers", "Avengers:Infinity War" ] }
] }
उपरोक्त आउटपुट को देखें, मान "Avengers:Infinity War" 3rd पोजिशन यानी इंडेक्स 2 पर है।
केस 2: आइए अब इंडेक्स 1 यानी 2nd पोजिशन के साथ अपडेट करें। क्वेरी इस प्रकार है:
> db.updateExactField.update( {"ActorDetails.ActorName":"Chris Evans"}, {$set: {"ActorDetails.$.MovieList.1":"Gifted"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
आइए find() मेथड की मदद से कलेक्शन से डॉक्यूमेंट चेक करें। क्वेरी इस प्रकार है:
> db.updateExactField.find().pretty();
निम्नलिखित आउटपुट है:
{ "_id" : ObjectId("5c6d7f63f2db199c1278e7f1"), "ActorId" : 1, "ActorDetails" : [
{ "ActorName" : "Johnny Depp", "MovieList" : [ "The Tourist", "Public Enemy" ] },
{ "ActorName" : "Chris Evans", "MovieList" : [ "Captain America", "Gifted", "Avengers:Infinity War" ] }
] }
उपरोक्त सैंपल आउटपुट को देखें, मान "Gifted" 2nd पोजिशन यानी इंडेक्स 1 पर है।