দুটি ধাপে অ্যারে থেকে নির্দিষ্ট ইনডেক্সের এলিমেন্ট মুছে ফেলা
MongoDB-এ সরাসরি অ্যারে ইনডেক্স দিয়ে এলিমেন্ট মুছে ফেলার অপারেটর নেই। এর জন্য দুই ধাপ অনুসরণ করতে হয়:
- $unset দিয়ে ঐ ইনডেক্সে
nullসেট করুন। - $pull দিয়ে
nullভ্যালুগুলো অ্যারে থেকে বাদ দিন।
সিনট্যাক্স
// Step 1: নির্দিষ্ট ইনডেক্সে null সেট
db.yourCollectionName.update({}, { $unset: { "yourArrayFieldName.yourIndexValue": 1 } });
// Step 2: null ভ্যালুগুলো অ্যারে থেকে পুল করুন
db.yourCollectionName.update({}, { $pull: { "yourArrayFieldName": null } });
উদাহরণ
> db.removeArrayElementByItsIndexDemo.insertOne({
"InstructorName": "David", "InstructorAge": 28,
"InstructorSubject": ["MongoDB","MySQL","Java","SQL Server","PL/SQL"]
});
Step 1: ইনডেক্স ২ (Java) মুছে ফেলা:
> db.removeArrayElementByItsIndexDemo.update({}, { $unset: { "InstructorSubject.2": 1 } });
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
Step 2: null ভ্যালু সরিয়ে ফেলা:
> db.removeArrayElementByItsIndexDemo.update({}, { $pull: { "InstructorSubject": null } });
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
ফলাফল যাচাই:
> db.removeArrayElementByItsIndexDemo.find().pretty();
{
"_id" : ObjectId("5c8abbfc6cea1f28b7aa0803"),
"InstructorName" : "David", "InstructorAge" : 28,
"InstructorSubject" : [ "MongoDB", "MySQL", "SQL Server", "PL/SQL" ]
}
নোট: MongoDB 3.6+ এ $pull সরাসরি শর্ত দিয়ে এলিমেন্ট মুছে ফেলা যায়, তবে ইনডেক্স বেসড রিমুভের জন্য এই পদ্ধতিটি কার্যকর।