MongoDB में पोजिशनल ऑपरेटर के साथ सबडॉक्यूमेंट्स ऐरे अपडेट करना
अपडेट करने के लिए update() के साथ $set का उपयोग करें।
कलेक्शन बनाना
>db.demo134.insertOne({"EmployeeId":101,"EmployeeDetails":[{"EmployeeName":"Chris","EmployeeAge":27},{"EmployeeName":"Bob","EmployeeAge":28}]});
{ "acknowledged": true, "insertedId": ObjectId("5e319b2f68e7f832db1a7f7c") }
>db.demo134.insertOne({"EmployeeId":102,"EmployeeDetails":[{"EmployeeName":"David","EmployeeAge":24},{"EmployeeName":"Carol","EmployeeAge":29}]});
{ "acknowledged": true, "insertedId": ObjectId("5e319b4468e7f832db1a7f7d") }
अपडेट से पहले
> db.demo134.find().pretty();
सबडॉक्यूमेंट अपडेट क्वेरी
> db.demo134.update( { "EmployeeId": 101, "EmployeeDetails.EmployeeName": "Chris" }, { $set: { "EmployeeDetails.$.EmployeeName": "Robert" } } ); WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })अपडेट के बाद
> db.demo134.find().pretty();व्याख्या
- क्वेरी: दो शर्तें - EmployeeId: 101 AND EmployeeDetails ऐरे में EmployeeName: "Chris" वाला तत्व
- $set: निर्दिष्ट फील्ड अपडेट करता है
- पोजिशनल $: EmployeeDetails ऐरे में "Chris" से मेल खाने वाले तत्व की स्थिति को संदर्भित करता है
- केवल EmployeeId 101 वाले डॉक्यूमेंट में Chris को Robert में बदला गया
- EmployeeId 102 वाला डॉक्यूमेंट अपरिवर्तित रहा
महत्वपूर्ण नोट
क्वेरी में ऐरे फील्ड पर शर्त निर्दिष्ट करना आवश्यक है ("EmployeeDetails.EmployeeName": "Chris") ताकि पोजिशनल ऑपरेटर सही तत्व की पहचान कर सके।