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

MongoDB-এ হায়ারার্কিক্যাল অ্যারে-এ পজিশনাল অপারেটর ($[]) ব্যবহার করা


MongoDB-এ অ্যাল-পজিশনাল অপারেটর ($[]) দিয়ে অ্যারে-র সব এলিমেন্ট আপডেট করা

MongoDB 3.6+ ভার্সনে $[] (All Positional Operator) ব্যবহার করে একটি অ্যারে-র সব এলিমেন্ট একসাথে আপডেট করা যায়। এটি নেস্টেড অ্যারে-র জন্যও কাজ করে।

১. কালেকশন ও নমুনা ডেটা তৈরি

> db.demo324.insertOne({"ListOfValues":[10,20,30]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e516349f8647eb59e562073") }

২. আপডেটের আগে ডকুমেন্ট

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

আউটপুট:

{ "_id" : ObjectId("5e516349f8647eb59e562073"), "ListOfValues" : [ 10, 20, 30 ] }

৩. $[] অপারেটর দিয়ে সব এলিমেন্ট "MongoDB" স্ট্রিং-এ পরিবর্তন

> db.demo324.update(
  { "ListOfValues": [10,20,30] },
  { $set: { "ListOfValues.$[]": "MongoDB" } },
  { upsert: true }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ব্যাখ্যা:

  • ListOfValues.$[] - অ্যারে-র সব এলিমেন্টকে ইন্ডিকেট করে।
  • $set - প্রতিটি এলিমেন্টের নতুন মান সেট করে।
  • upsert: true - ম্যাচ না করলে নতুন ডকুমেন্ট তৈরি করবে (এখানে ম্যাচ করলো)।

৪. আপডেটের পর ডকুমেন্ট

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

আউটপুট:

{ "_id" : ObjectId("5e516349f8647eb59e562073"), "ListOfValues" : [ "MongoDB", "MongoDB", "MongoDB" ] }

অ্যারে-র তিনটি সংখ্যাগত মান (10, 20, 30) সব গুলো "MongoDB" স্ট্রিং-এ রূপান্তরিত হয়েছে।

তুলনা:

  • $ (সিংগল পজিশনাল) - কোয়েরি ম্যাচ করা প্রথম এলিমেন্ট আপডেট করে।
  • $[] (অ্যাল পজিশনাল) - অ্যারে-র সব এলিমেন্ট আপডেট করে।
  • $[] (ফিল্টারড পজিশনাল) - নির্দিষ্ট শর্ত পূরণকারী এলিমেন্টগুলো আপডেট করে (arrayFilters দিয়ে)।

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

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

  3. MongoDB-এ শর্তসাপেক্ষ কনক্যাটেনেশন (Concatenate with Condition)

  4. MongoDB-এ $push অপারেটর ব্যবহার করে অ্যারে আপডেট করা