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

MongoDB-তে অ্যারে এর মান রিপ্লেস করা ($set ব্যবহার করে)

MongoDB-এ অ্যারের নির্দিষ্ট পজিশনের মান রিপ্লেস করতে $set এবং পজিশনাল $ অপারেটর ব্যবহার করা হয়।

নমুনা ডেটা তৈরি করা

replaceValueInArrayDemo কালেকশনে দুটি ডকুমেন্ট ইনসার্ট করি যাতে StudentScores অ্যারে থাকে।

> db.replaceValueInArrayDemo.insertOne({"StudentScores":[45,56,78]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7f0421a844af18acdffb7") }
> db.replaceValueInArrayDemo.insertOne({"StudentScores":[33,90,67]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7f0521a844af18acdffb8") }

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

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

আউটপুট:

{ "_id" : ObjectId("5cd7f0421a844af18acdffb7"), "StudentScores" : [ 45, 56, 78 ] }
{ "_id" : ObjectId("5cd7f0521a844af18acdffb8"), "StudentScores" : [ 33, 90, 67 ] }

অ্যারে মান রিপ্লেস করা

প্রথম ডকুমেন্টে (_id জানা থাকে) যেখানে StudentScores এ ৪৫ আছে, সেটিকে ৯৯ করতে:

> db.replaceValueInArrayDemo.update(
  { _id: ObjectId("5cd7f0421a844af18acdffb7"), StudentScores: 45 },
  { $set: { 'StudentScores.$': 99 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ফলাফল দেখানো

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

আউটপুট:

{ "_id" : ObjectId("5cd7f0421a844af18acdffb7"), "StudentScores" : [ 99, 56, 78 ] }
{ "_id" : ObjectId("5cd7f0521a844af18acdffb8"), "StudentScores" : [ 33, 90, 67 ] }

ব্যাখ্যা: কোয়েরি StudentScores: 45 দিয়ে ম্যাচ করল $ সেটি পজিশন ইঙ্গিত করে। $set সেটি ৯৯ করেছে। শুধু প্রথম ম্যাচ আপডেট হয়। সব ম্যাচ আপডেট করতে arrayFilters (MongoDB 3.6+) ব্যবহার করুন।

  1. MongoDB কোয়ারী: আইডি যদি ডকুমেন্ট ফিল্ড অ্যারে মানের সমান হয় তবে বাদ দেওয়া

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

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

  4. MongoDB-এ অ্যারে কোয়েরি করে নির্দিষ্ট ভ্যালু ফেচ করা