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+) ব্যবহার করুন।