MongoDB में डॉट नोटेशन का उपयोग करके नेस्टेड दस्तावेज़ अपडेट करना
गहराई से नेस्टेड फ़ील्ड को अपडेट करने के लिए, $set ऑपरेटर के साथ डॉट नोटेशन का उपयोग करके सटीक पथ निर्दिष्ट करें। सरणी इंडेक्स (0-आधारित) का उपयोग सरणी के विशिष्ट तत्व को लक्षित करने के लिए किया जाता है।
नमूना डेटा: गहरी नेस्टिंग
> db.demo315.insertOne({
_id: 101,
details: [
{Name: 'Chris', subjects: [{id: 1001, SubjectName: "MySQL"}]}
]
});
{ "acknowledged": true, "insertedId": 101 }
संरचना: details[0].subjects[0] में id: 1001 है। हम subjects सरणी में एक नया दूसरा तत्व (इंडेक्स 1) जोड़ना चाहते हैं।
अपडेट क्वेरी
> db.demo315.update({_id: 101}, {'$set': {"details.0.subjects.1.id": 1004}});
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
details.0→ पहली सरणी तत्वsubjects.1→subjectsसरणी में दूसरा स्थान (इंडेक्स 1)id→ सेट करने के लिए फ़ील्ड
परिणाम
{ "_id": 101, "details": [ { "Name": "Chris", "subjects": [ { "id": 1001, "SubjectName": "MySQL" }, { "id": 1004 } ] } ] }
subjects सरणी में अब दूसरा तत्व {id: 1004} है। यदि इंडेक्स सरणी की वर्तमान लंबाई से अधिक है, तो MongoDB बीच के स्लॉट्स को null से भर देगा। सरणी में ऑब्जेक्ट जोड़ने के लिए $push अक्सर अधिक सुरक्षित होता है।