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

MongoDB-এ অ্যারেতে নির্দিষ্ট মান রিপ্লেস করা (Positional $ ও $set)

MongoDB-এ একটি অ্যারেতে নির্দিষ্ট মান খুঁজে সেটি অন্য মান দিয়ে রিপ্লেস (replace) করার জন্য $set অপারেটর সহ পজিশনাল $ (Positional $) অপারেটর ব্যবহার করা হয়। পজিশনাল $ কুয়েরিতে ম্যাচ হওয়া অ্যারে এলিমেন্টের পজিশন নির্দেশ করে।

উদাহরণ: কালেকশন ও ডেটা তৈরি

> db.demo564.insertOne({"StudentName": ["Chris", "David", "Mike", "Sam"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e90880a39cfeaaf0b97b576") }

সব ডকুমেন্ট দেখানো

> db.demo564.find().pretty();

আউটপুট:

{
    "_id" : ObjectId("5e90880a39cfeaaf0b97b576"),
    "StudentName" : [ "Chris", "David", "Mike", "Sam" ]
}

"David" কে "Carol Taylor" দিয়ে রিপ্লেস করা

> db.demo564.updateMany(
    { "StudentName": "David" },
    { "$set": { "StudentName.$": "Carol Taylor" } }
);
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

কোয়েরির ব্যাখ্যা

  • { "StudentName": "David" } — ফিল্টার: যেসব ডকুমেন্টে StudentName অ্যারেতে "David" আছে।
  • { "$set": { "StudentName.$": "Carol Taylor" } } — $ (পজিশনাল) কুয়েরিতে ম্যাচ হওয়া এলিমেন্টের ইনডেক্স নির্দেশ করে (এখানে ইনডেক্স ১)। শুধু সেই এলিমেন্ট আপডেট হয়।
  • updateMany() — সব মিলে যাওয়া ডকুমেন্ট আপডেট করে (এখানে ১টি ডকুমেন্ট)۔

আপডেটের পর ডকুমেন্ট দেখানো

> db.demo564.find().pretty();

আউটপুট:

{
    "_id" : ObjectId("5e90880a39cfeaaf0b97b576"),
    "StudentName" : [ "Chris", "Carol Taylor", "Mike", "Sam" ]
}

মূল পয়েন্টসমূহ

  • পজিশনাল $ কুয়েরিতে ম্যাচ হওয়া প্রথম এলিমেন্টকে আপডেট করে। একাধিক ম্যাচ হলে শুধু প্রথমটি।
  • স্ট্রিং অ্যারে (array of strings) এ ডট নোটেশন StudentName.$ কাজ করে।
  • অবজেক্ট অ্যারে (array of objects) এ: { $set: { "arr.$.field": value } }।
  • সব ম্যাচ হওয়া এলিমেন্ট আপডেট করতে arrayFilters (MongoDB 3.6+) ব্যবহার করুন।
  • updateOne() শুধু প্রথম ডকুমেন্ট আপডেট করে; updateMany() সব ডকুমেন্ট।
  1. MongoDB-এ অ্যারে-র ভেতর রেঞ্জ (Range) কোয়েরি: $gt এবং $lt ব্যবহার

  2. MongoDB-এ অ্যারে অবজেক্টের নির্দিষ্ট এলিমেন্টের মান ইনক্রিমেন্ট করা

  3. MongoDB-এ updateOne এবং $push ব্যবহার করে নেস্টেড অ্যারে আপডেট করা

  4. MongoDB-তে অ্যারের ভ্যালু অনুযায়ী কালেকশন সর্ট করা (aggregate + $unwind + $sort)