MongoDB में सिंगल अपडेट में $set और $push संयोजित करना
एक ही अपडेट ऑपरेशन में फील्ड सेट करने और ऐरे में तत्व जोड़ने के लिए update() का उपयोग करें।
कलेक्शन बनाना
> db.dem0143.insertOne({"StudentId":1,"Details":{"Name":"Chris"}});
{ "acknowledged": true, "insertedId": ObjectId("5e32eb9efdf09dd6d08539b7") }
> db.dem0143.insertOne({"StudentId":2,"Details":{"Name":"David"}});
{ "acknowledged": true, "insertedId": ObjectId("5e32eba5fdf09dd6d08539b8") }
अपडेट से पहले
> db.dem0143.find();
{ "_id": ObjectId("5e32eb9efdf09dd6d08539b7"), "StudentId": 1, "Details": { "Name": "Chris" } }
{ "_id": ObjectId("5e32eba5fdf09dd6d08539b8"), "StudentId": 2, "Details": { "Name": "David" } }
$set और $push संयोजित क्वेरी
> db.dem0143.update({_id: ObjectId("5e32eba5fdf09dd6d08539b8")}, {$push: {StudentAge:21}, $set: {"Details.Name":"John Doe"}});
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
अपडेट के बाद
> db.dem0143.find();
व्याख्या
- $set: मौजूदा फील्ड को अपडेट करता है (Details.Name को "John Doe" में बदलता है)
- $push: नया ऐरे फील्ड बनाता है या मौजूदा ऐरे में तत्व जोड़ता है (StudentAge ऐरे में 21 जोड़ता है)
- दोनों ऑपरेटर एक ही अपडेट ऑब्जेक्ट में निर्दिष्ट हैं
- क्वेरी _id द्वारा विशिष्ट डॉक्यूमेंट को लक्षित करती है
महत्वपूर्ण नोट
- यदि StudentAge मौजूद नहीं है, तो $push नया ऐरे बनाता है
- यदि StudentAge पहले से ऐरे है, तो मान जोड़ता है
- आधुनिक MongoDB में updateOne() का उपयोग करें