MongoDB-এ নেস্টেড অ্যারে (অ্যারের ভেতরে অ্যারে) থেকে নির্দিষ্ট রেকর্ড মুছে ফেলতে $pull অপারেটর সহ পজিশনাল অপারেটর ব্যবহার করুন।
উদাহরণ
নেস্টেড অ্যারে স্ট্রাকচার সহ ডকুমেন্ট তৈরি করুন:
> db.deletingSpecificRecordDemo.insertOne({
"StudentDetails": [
{
"StudentName": "John",
"StudentSubjectDetails": [
{ "Subject": "MongoDB", "Marks": 45 },
{ "Subject": "MySQL", "Marks": 67 }
]
}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cf2210ab64a577be5a2bc06") }
ডকুমেন্টটি দেখুন:
> db.deletingSpecificRecordDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5cf2210ab64a577be5a2bc06"), "StudentDetails" : [ { "StudentName" : "John", "StudentSubjectDetails" : [ { "Subject" : "MongoDB", "Marks" : 45 }, { "Subject" : "MySQL", "Marks" : 67 } ] } ] }
Marks = 45 olan সাব-ডকুমেন্ট মুছে ফেলা
> db.deletingSpecificRecordDemo.update(
{ "_id": ObjectId("5cf2210ab64a577be5a2bc06"), "StudentDetails.StudentName": "John" },
{ "$pull": { "StudentDetails.$.StudentSubjectDetails": { "Marks": 45 } } },
{ multi: true }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
আপডেট হওয়ার পর ডকুমেন্টটি যাচাই করুন:
> db.deletingSpecificRecordDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5cf2210ab64a577be5a2bc06"), "StudentDetails" : [ { "StudentName" : "John", "StudentSubjectDetails" : [ { "Subject" : "MySQL", "Marks" : 67 } ] } ] }
ব্যাখ্যা:
StudentDetails.StudentName: "John"— বাহ্যিক অ্যারেতে John-এর লোকেশন খুঁজে বের করে।StudentDetails.$.StudentSubjectDetails— পজিশনাল$অপারেটর সেই ম্যাচ করা এলিমেন্টকে রেফার করে।$pull— নেস্টেড অ্যারেতে থেকেMarks: 45থাকা অবজেক্টটি সরিয়ে দিয়েছে।
নোট: শুধু একটি নেস্টেড লেভেলের জন্য পজিশনাল $ কাজ করে। গভীর নেস্টিংয়ের জন্য arrayFilters (MongoDB ৩.৬+) ব্যবহার করুন।