MongoDB में $set के साथ मल्टीपल डॉक्यूमेंट्स अपडेट करना
update() मेथड के साथ $set ऑपरेटर का उपयोग करके एक फील्ड के मान को अपडेट किया जा सकता है। जब multi: true विकल्प के साथ उपयोग किया जाता है, तो यह क्वेरी मानदंड से मेल खाने वाले सभी डॉक्यूमेंट्स को अपडेट करता है।
नमूना डेटा बनाना
> db.workingOfUpdateMethod.insertOne({"ClientCountryName" : "AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd506fe2cba06f46efe9efa") }
> db.workingOfUpdateMethod.insertOne({"ClientCountryName" : "AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd507022cba06f46efe9efb") }
> db.workingOfUpdateMethod.insertOne({"ClientCountryName" : "AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd507022cba06f46efe9efc") }
> db.workingOfUpdateMethod.insertOne({"ClientCountryName" : "AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd507032cba06f46efe9efd") }
अपडेट से पहले सभी डॉक्यूमेंट्स देखना
> db.workingOfUpdateMethod.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd506fe2cba06f46efe9efa"), "ClientCountryName" : "AUS" }
{ "_id" : ObjectId("5cd507022cba06f46efe9efb"), "ClientCountryName" : "AUS" }
{ "_id" : ObjectId("5cd507022cba06f46efe9efc"), "ClientCountryName" : "AUS" }
{ "_id" : ObjectId("5cd507032cba06f46efe9efd"), "ClientCountryName" : "AUS" }
multi: true के साथ सभी मिलान करने वाले डॉक्यूमेंट्स अपडेट करना
ClientCountryName फील्ड को "AUS" से "UK" में उन सभी डॉक्यूमेंट्स के लिए बदलें जहां यह "AUS" है:
> db.workingOfUpdateMethod.update(
{ "ClientCountryName" : "AUS" },
{ $set: { "ClientCountryName" : "UK" } },
{ multi: true }
);
WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 4 })
अपडेट के बाद डॉक्यूमेंट्स वेरिफाई करना
> db.workingOfUpdateMethod.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd506fe2cba06f46efe9efa"), "ClientCountryName" : "UK" }
{ "_id" : ObjectId("5cd507022cba06f46efe9efb"), "ClientCountryName" : "UK" }
{ "_id" : ObjectId("5cd507022cba06f46efe9efc"), "ClientCountryName" : "UK" }
{ "_id" : ObjectId("5cd507032cba06f46efe9efd"), "ClientCountryName" : "UK" }
महत्वपूर्ण नोट्स
- multi: true - क्वेरी से मेल खाने वाले सभी डॉक्यूमेंट्स को अपडेट करता है। इसके बिना, केवल पहला मिलान करने वाला डॉक्यूमेंट अपडेट होता है।
- $set - निर्दिष्ट फील्ड के मान को प्रतिस्थापित करता है; अन्य फील्ड्स अप्रभावित रहते हैं।
- WriteResult -
nMatched(मिलान किए गए डॉक्यूमेंट्स),nModified(वास्तव में बदले गए), औरnUpserted(अपसर्ट किए गए) दिखाता है।
आधुनिक MongoDB संस्करणों में:update()के बजायupdateMany()का उपयोग करने पर विचार करें, जो डिफ़ॉल्ट रूप से मल्टीपल डॉक्यूमेंट्स को अपडेट करता है औरmulti: trueकी आवश्यकता नहीं होती है।