स्थितीय ऑपरेटर ($) के साथ अपडेट
नेस्टेड सरणी के अंदर किसी विशिष्ट दस्तावेज़ के फील्ड को अपडेट करने के लिए, update कमांड के साथ स्थितीय ऑपरेटर ($) का उपयोग करें। $elemMatch क्वेरी मानदंड से मेल खाने वाले सरणी तत्व की पहचान करता है, और $ उस विशिष्ट तत्व को अपडेट करता है।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.findAndModifyAValueInNestedArrayDemo.insertOne(
... {
... "CompanyName" : "Amazon",
... "DeveloperDetails" : [
... { "ProjectName" : "Online Book Store", "TeamSize" : "5" },
... { "ProjectName" : "Library Management System", "TeamSize" : "7" },
... { "ProjectName" : "Online Banking Application", "TeamSize" : "15" }
... ]
... }
... );
{ "acknowledged" : true, "insertedId" : ObjectId("5ca275226304881c5ce84b9f") }
दस्तावेज़ देखना
> db.findAndModifyAValueInNestedArrayDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5ca275226304881c5ce84b9f"), "CompanyName" : "Amazon", "DeveloperDetails" : [ { "ProjectName" : "Online Book Store", "TeamSize" : "5" }, { "ProjectName" : "Library Management System", "TeamSize" : "7" }, { "ProjectName" : "Online Banking Application", "TeamSize" : "15" } ] }
नेस्टेड सरणी में मान अपडेट करना
"Online Banking Application" प्रोजेक्ट का TeamSize 20 पर सेट करें:
> db.findAndModifyAValueInNestedArrayDemo.update(
... { DeveloperDetails: { $elemMatch: { ProjectName: "Online Banking Application" } } },
... { $set: { 'DeveloperDetails.$.TeamSize': '20' } }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
अपडेट की पुष्टि
> db.findAndModifyAValueInNestedArrayDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5ca275226304881c5ce84b9f"), "CompanyName" : "Amazon", "DeveloperDetails" : [ { "ProjectName" : "Online Book Store", "TeamSize" : "5" }, { "ProjectName" : "Library Management System", "TeamSize" : "7" }, { "ProjectName" : "Online Banking Application", "TeamSize" : "20" } ] }
मुख्य बिंदु: $elemMatch सुनिश्चित करता है कि हम सही सरणी तत्व को लक्षित करें, और $ उस मिलान वाले तत्व के लिए प्लेसहोल्डर के रूप में कार्य करता है।