MongoDB-এ একই শর্ত পূরণকারী একাধিক ডকুমেন্ট আটোমিকভাবে (atomic) আপডেট করার জন্য update() মেথডে multi: true অপশন (লিগেসি) বা আধুনিক updateMany() মেথড ব্যবহার করা হয়। $set অপারেটর নির্দিষ্ট ফিল্ড আপডেট করতে ব্যবহৃত হয়।
উদাহরণ: কালেকশন ও ডেটা তৈরি
> db.demo699.insertOne({ Name: "Chris Brown" });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6e370551299a9f98c93a7") }
> db.demo699.insertOne({ Name: "David Miller" });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6e37a551299a9f98c93a8") }
> db.demo699.insertOne({ Name: "Chris Brown" });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6e381551299a9f98c93a9") }
> db.demo699.insertOne({ Name: "John Doe" });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6e38a551299a9f98c93aa") }
সব ডকুমেন্ট দেখানো
> db.demo699.find();
আউটপুট:
{ "_id" : ObjectId("5ea6e370551299a9f98c93a7"), "Name" : "Chris Brown" }
{ "_id" : ObjectId("5ea6e37a551299a9f98c93a8"), "Name" : "David Miller" }
{ "_id" : ObjectId("5ea6e381551299a9f98c93a9"), "Name" : "Chris Brown" }
{ "_id" : ObjectId("5ea6e38a551299a9f98c93aa"), "Name" : "John Doe" }
একাধিক ডকুমেন্ট আটোমিক আপডেট (multi: true)
> db.demo699.update(
{ Name: "Chris Brown" },
{ $set: { Name: "Adam Smith" } },
false, // upsert
true // multi
);
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
প্যারামিটার ব্যাখ্যা (লিগেসি update() সিনট্যাক্স)
query:{ Name: "Chris Brown" }— ফিল্টার।update:{ $set: { Name: "Adam Smith" } }— আপডেট অপারেশন।upsert: false— ম্যাচ না করলে ইনসার্ট করবে না।multi: true— সব মিলে যাওয়া ডকুমেন্ট আপডেট করবে (ডিফল্ট false = শুধু প্রথমটি)۔
আপডেটের পর ডকুমেন্ট দেখানো
> db.demo699.find();
আউটপুট:
{ "_id" : ObjectId("5ea6e370551299a9f98c93a7"), "Name" : "Adam Smith" }
{ "_id" : ObjectId("5ea6e37a551299a9f98c93a8"), "Name" : "David Miller" }
{ "_id" : ObjectId("5ea6e381551299a9f98c93a9"), "Name" : "Adam Smith" }
{ "_id" : ObjectId("5ea6e38a551299a9f98c93aa"), "Name" : "John Doe" }
আধুনিক সিনট্যাক্স (MongoDB 3.2+)
> db.demo699.updateMany(
{ Name: "Chris Brown" },
{ $set: { Name: "Adam Smith" } }
);
updateMany()— সব মিলে যাওয়া ডকুমেন্ট আপডেট করে (multi: true-র সমতুল্য)۔updateOne()— শুধু প্রথম মিলে যাওয়া ডকুমেন্ট আপডেট করে।- রিটার্ন অবজেক্টে
matchedCount,modifiedCountথাকে।
মূল পয়েন্টসমূহ
multi: trueবাupdateMany()একাধিক ডকুমেন্ট আপডেটের জন্য আবশ্যক।$setশুধু নির্দিষ্ট ফিল্ড আপডেট করে (অন্যান্য ফিল্ড অপরিবর্তিত)۔- সিংগল ডকুমেন্ট আপডেট আটোমিক (atomic); মাল্টি-ডকুমেন্ট আপডেট আটোমিক নয় (প্রতিটি ডকুমেন্ট আলাদা আটোমিক)۔
- ট্রানজ্যাকশন (MongoDB 4.0+) ব্যবহার করলে মাল্টি-ডকুমেন্ট আটোমিকিটি পাওয়া যায়।