MongoDB-এ অ্যারে অফ অবজেক্টস-এ নির্দিষ্ট শর্ত পূরণ করা এলিমেন্টে নতুন ফিল্ড যোগ করতে $push সহ পজিশনাল $ অপারেটর ব্যবহার করুন।
উদাহরণ
অ্যারে অফ অবজেক্টস সহ ডকুমেন্ট তৈরি করুন:
> db.updateArrayElementDemo.insertOne({
"UserDetails": [ { "UserName": "Chris", "UserAge": 23 } ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5ce9029378f00858fb12e90d") }
ডকুমেন্টটি দেখুন:
> db.updateArrayElementDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5ce9029378f00858fb12e90d"), "UserDetails" : [ { "UserName" : "Chris", "UserAge" : 23 } ] }
UserAge = 23 olan এলিমেন্টে UserCountryName ফিল্ড যোগ করা (পুশ)
db.updateArrayElementDemo.update(
{ "UserDetails.UserAge": 23 },
{ "$push": { "UserDetails.$.UserCountryName": "US" } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
আপডেট হওয়ার পর ডকুমেন্টটি যাচাই করুন:
> db.updateArrayElementDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5ce9029378f00858fb12e90d"), "UserDetails" : [ { "UserName" : "Chris", "UserAge" : 23, "UserCountryName" : [ "US" ] } ] }
ব্যাখ্যা:
UserDetails.UserAge: 23— অ্যারেতে UserAge ২৩ থাকা এলিমেন্ট খুঁজে বের করে।UserDetails.$.UserCountryName— পজিশনাল$ম্যাচ করা এলিমেন্টকে রেফার করে, তারUserCountryNameঅ্যারেতে "US" পুশ করেছে।UserCountryNameআগে ছিল না, তাই নতুন অ্যারে তৈরি হয়েছে।
সতর্কতা: শুধু প্রথম ম্যাচ করা এলিমেন্ট আপডেট হয়। একাধিক এলিমেন্ট আপডেট করতে arrayFilters (MongoDB ৩.৬+) ব্যবহার করুন:
db.updateArrayElementDemo.update(
{ },
{ "$push": { "UserDetails.$[elem].UserCountryName": "US" } },
{ arrayFilters: [{ "elem.UserAge": 23 }], multi: true }
);