নির্দিষ্ট রেকর্ড মুছে ফেলতে $pull ব্যবহার করুন এবং যেহেতু ইতিমধ্যে তৈরি কলেকশন আপডেট করা হচ্ছে, তাই UPDATE() ব্যবহার করুন।
ডকুমেন্টসহ একটি কলেকশন তৈরি করা
> db.demo213.insertOne({ ... "id": 101, ... "details1": [ ... { ... "Name": "Chris", ... "details2": [ ... { ... "StudentName": "David", ... "Subject": "MongoDB" ... }, ... { ... "StudentName": "Mike", ... "Subject": "MySQL" ... } ... ] ... ... } ... ] ...} ...); { "acknowledged" : true, "insertedId" : ObjectId("5e3e300c03d395bdc2134704") }
find() মেথড ব্যবহার করে সব ডকুমেন্ট দেখানো
> db.demo213.find().pretty();
এটি নিচের আউটপুট তৈরি করবে:
{ "_id" : ObjectId("5e3e300c03d395bdc2134704"), "id" : 101, "details1" : [ { "Name" : "Chris", "details2" : [ { "StudentName" : "David", "Subject" : "MongoDB" }, { "StudentName" : "Mike", "Subject" : "MySQL" } ] } ] }
নেস্টেড অ্যারে থেকে নির্দিষ্ট রেকর্ড মুছে ফেলার কোয়ারী
> db.demo213.update({"id": 101, "details1.Name": "Chris"}, ... { ... "$pull": {"details1.$.details2" : { "Subject": "MySQL" }} ... }, multi=true ...) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
আপডেটের পর সব ডকুমেন্ট দেখানো
> db.demo213.find().pretty();
এটি নিচের আউটপুট তৈরি করবে:
{ "_id" : ObjectId("5e3e300c03d395bdc2134704"), "id" : 101, "details1" : [ { "Name" : "Chris", "details2" : [ { "StudentName" : "David", "Subject" : "MongoDB" } ] } ] }
ব্যাখ্যা: প্রথমে প্যারেন্ট ডকুমেন্ট (id: 101) এবং প্রথম লেভেল অ্যারে এলিমেন্ট (details1.Name: "Chris") ফিল্টার করা হয়েছে। তারপর পজিশনাল $ অপারেটর দিয়ে সেই এলিমেন্টের নেস্টেড details2 অ্যারে থেকে Subject: "MySQL" মিলে যাওয়া এলিমেন্ট $pull দিয়ে মুছে ফেলা হয়েছে।