MongoDB-এ অ্যারের ভেতরের নির্দিষ্ট এমবেডেড ডকুমেন্টে নতুন ফিল্ড যোগ করতে update() এর সাথে পজিশনাল $ অপারেটর ব্যবহার করা হয়।
নমুনা ডেটা তৈরি করা
addAFieldDemo কালেকশনে একটি ডকুমেন্ট ইনসার্ট করি যাতে ClientOtherDetails নামে একটি অ্যারে থাকে, যার ভিতরে এমবেডেড ডকুমেন্ট আছে।
> db.addAFieldDemo.insertOne(
{
"ClientName" : "Larry",
"ClientCountryName" : "US",
"ClientOtherDetails" : [
{
"ClientProjectName" : "Online Banking System"
}
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cd44bdc2cba06f46efe9ee8") }
ডকুমেন্ট দেখানো
> db.addAFieldDemo.find().pretty();
আউটপুট:
{
"_id" : ObjectId("5cd44bdc2cba06f46efe9ee8"),
"ClientName" : "Larry",
"ClientCountryName" : "US",
"ClientOtherDetails" : [
{
"ClientProjectName" : "Online Banking System"
}
]
}
অ্যারের ভেতরের ডকুমেন্টে ফিল্ড যোগ করা
$elemMatch দিয়ে সঠিক এলিমেন্ট খুঁজে $ পজিশনাল অপারেটর দিয়ে isMarried ফিল্ড যোগ করি:
> db.addAFieldDemo.update(
{ ClientOtherDetails: { $elemMatch: { "ClientProjectName" : "Online Banking System" } } },
{ $set : { 'ClientOtherDetails.$.isMarried' : true } },
true
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ফলাফল দেখানো
> db.addAFieldDemo.find().pretty();
আউটপুট:
{
"_id" : ObjectId("5cd44bdc2cba06f46efe9ee8"),
"ClientName" : "Larry",
"ClientCountryName" : "US",
"ClientOtherDetails" : [
{
"ClientProjectName" : "Online Banking System",
"isMarried" : true
}
]
}
মনে রাখবেন: $ অপারেটর কোয়েরি মেলানো প্রথম এলিমেন্টকে ইঙ্গিত করে। একাধিক এলিমেন্ট আপডেট করতে arrayFilters ব্যবহার করুন (MongoDB 3.6+)。