গভীর নেস্টেড অ্যারে (সাব-অফ-সাব-অ্যারে) থেকে নির্দিষ্ট এলিমেন্ট মুছে ফেলতে $pull এবং পজিশনাল $ অপারেটর ব্যবহার করুন। একটি কালেকশন তৈরি করুন:
> db.demo679.insertOne({
id:1,
"details": [
{
CountryName:"US",
"information": [
{ "Name": "Chris", "FirstName": "Name=Chris" },
{ "Name": "Bob", "FirstName": "Name=Bob" }
]
},
{
CountryName:"UK",
"information": [
{ "Name": "Robert", "FirstName": "Name=Robert" },
{ "Name": "Sam", "FirstName": "Name=Sam" }
]
}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea442cf04263e90dac943fd") }
find() দিয়ে ডকুমেন্ট দেখান:
> db.demo679.find();
আউটপুট:
CountryName: "US"가진 সাব-ডকুমেন্টেরinformationঅ্যারেতেName: "Bob"মুছার কোয়ারি:> db.demo679.update( { "details.CountryName":"US" }, { $pull: { 'details.$.information': { "Name" : "Bob", "FirstName" : "Name=Bob" } } } ); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })আপডেটের পর ডকুমেন্ট দেখান:
> db.demo679.find().pretty();আউটপুট (Bob মুছে গেছে):
ব্যাখ্যা:
details.CountryName: "US"কোয়ারি বাহ্যিক অ্যারেতে ম্যাচ করে। পজিশনাল$সেই ম্যাচ করা এলিমেন্টকে (US অবজেক্ট) পয়েন্ট করে।$pullতার ভেতরেরinformationঅ্যারেতে শর্ত মেনে যাওয়া এলিমেন্ট মুছে দেয়। শুধুNameদিয়েও পুল করা যায়।