কম্পিউটার টিউটোরিয়াল

MongoDB-এ একাধিক আটোমিক আপডেট (update() with $set, multi: true)

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() সিনট্যাক্স)

  1. query: { Name: "Chris Brown" } — ফিল্টার।
  2. update: { $set: { Name: "Adam Smith" } } — আপডেট অপারেশন।
  3. upsert: false — ম্যাচ না করলে ইনসার্ট করবে না।
  4. 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+) ব্যবহার করলে মাল্টি-ডকুমেন্ট আটোমিকিটি পাওয়া যায়।
  1. MongoDB-এ findOne()-এ রেগেক্স ব্যবহার করা

  2. MongoDB-এ $in কোয়ারি একাধিক সিঙ্গল সার্চের চেয়ে দ্রুত কিনা?

  3. MongoDB Aggregation-এ $redact এবং $cond ব্যবহার করে ডকুমেন্ট ফিল্টার

  4. MongoDB updateOne() এবং insertOne() ব্যবহার