MongoDB-এ নেস্টেড অ্যারে (অ্যারে ভিতরে অ্যারে) থেকে নির্দিষ্ট এলিমেন্ট মুছে ফেলতে $pull এবং পজিশনাল $ অপারেটর কম্বাইন করে ব্যবহার করা হয়। $elemMatch দিয়ে পেরেন্ট এলিমেন্ট চিহ্নিত করা হয়।
নমুনা ডেটা তৈরি (StudentDetails -> StudentFavouriteSubject নেস্টেড অ্যারে)
> db.pullWithPositionalOperatorDemo.insertOne({
_id: 100,
"StudentDetails": [
{
"StudentId": "STU-1",
"StudentFavouriteSubject": ["MongoDB", "Java"]
},
{
"StudentId": "STU-2",
"StudentFavouriteSubject": ["PHP", "MySQL"]
}
]
});
{ "acknowledged": true, "insertedId": 100 }
ডকুমেন্ট দেখুন
> db.pullWithPositionalOperatorDemo.find().pretty();আউটপুট:
{
"_id": 100,
"StudentDetails": [
{"StudentId": "STU-1", "StudentFavouriteSubject": ["MongoDB", "Java"]},
{"StudentId": "STU-2", "StudentFavouriteSubject": ["PHP", "MySQL"]}
]
}
StudentId="STU-2" এবং StudentFavouriteSubject="MySQL" মэтচ করে MySQL মুছে ফেলা
> db.pullWithPositionalOperatorDemo.update({
"StudentDetails": {
"$elemMatch": {
"StudentId": "STU-2",
"StudentFavouriteSubject": "MySQL"
}
}
}, {
$pull: {
"StudentDetails.$.StudentFavouriteSubject": "MySQL"
}
}, {
multi: true
});
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
আপডেট হওয়া ডকুমেন্ট যাচাই করুন
> db.pullWithPositionalOperatorDemo.find().pretty();আউটপুট (STU-2-র StudentFavouriteSubject থেকে MySQL বাদ পড়েছে):
{
"_id": 100,
"StudentDetails": [
{"StudentId": "STU-1", "StudentFavouriteSubject": ["MongoDB", "Java"]},
{"StudentId": "STU-2", "StudentFavouriteSubject": ["PHP"]}
]
}
ব্যাখ্যা:
$elemMatch: StudentDetails অ্যারেতে StudentId="STU-2" এবং StudentFavouriteSubject-এ "MySQL" থাকা এলিমেন্ট খুঁজে বের করে।StudentDetails.$.StudentFavouriteSubject: পজিশনাল$সেই মэтচ করা এলিমেন্টকে রেফার করে।$pull: সেই সাব-অ্যারেতে থেকে "MySQL" মুছে ফেলে।