নেস্টেড অ্যারেতে নতুন এলিমেন্ট যোগ করতে updateOne() এবং $push সাথে $elemMatch ব্যবহার করুন। একটি কালেকশন তৈরি করুন:
> db.demo526.insertOne({
"CountryName": "US",
"TeacherName": "Bob",
"StudentInformation": [
{ "Name": "Chris", "Subject": "MySQL", "ListOfMailId":[] },
{ "Name": "David", "Subject": "MongoDB", "ListOfMailId":[] }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8af031437efc8605595b6b") }
find() দিয়ে ডকুমেন্ট দেখান:
> db.demo526.find();
আউটপুট:
Name: "David"এবংSubject: "MongoDB"মিলে যাওয়া সাব-ডকুমেন্টেরListOfMailIdঅ্যারেতে ইমেইল যোগ করা:> db.demo526.updateOne( { _id:ObjectId("5e8af031437efc8605595b6b"), "StudentInformation": { "$elemMatch": { "Name": "David", "Subject": "MongoDB" }} }, { "$push": { "StudentInformation.$.ListOfMailId": { "MailId": "David@gmail.com" }} } ) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }আপডেটের পর ডকুমেন্ট দেখান:
> db.demo526.find();আউটপুট:
ব্যাখ্যা:
$elemMatchঅ্যারেতে শর্ত পূরণকারী সাব-ডকুমেন্ট খুঁজে বের করে। পজিশনাল$অপারেটর সেই ম্যাচ করা এলিমেন্টকে পয়েন্ট করে।$pushনতুন অবজেক্ট অ্যেন্ড করে। একাধিক ভ্যালু যোগ করতে$eachব্যবহার করুন।