MongoDB-এ একটি ডকুমেন্টের ভেতরের অ্যারে থেকে নির্দিষ্ট এলিমেন্ট মুছে ফেলার জন্য $pull অপারেটর ব্যবহার করা হয়। $pull অপারেটর একটি অ্যারে থেকে নির্দিষ্ট শর্ত পূরণ করা সব ইনস্ট্যান্স মুছে দেয়।
উদাহরণ: কালেকশন ও ডেটা তৈরি
db.demo541.insertOne({"software":{"services":["gmail","facebook","yahoo"]}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8ca845ef4dcbee04fbbc11") }
> db.demo541.insertOne({"software":{"services":["whatsapp","twitter"]}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8ca85cef4dcbee04fbbc12") }
সব ডকুমেন্ট দেখানো
> db.demo541.find();
আউটপুট:
{ "_id" : ObjectId("5e8ca845ef4dcbee04fbbc11"), "software" : { "services" : [ "gmail", "facebook", "yahoo" ] } }
{ "_id" : ObjectId("5e8ca85cef4dcbee04fbbc12"), "software" : { "services" : [ "whatsapp", "twitter" ] } }
অ্যারে থেকে "yahoo" মুছে ফেলা
প্রথম ডকুমেন্টে (যার _id হল ObjectId("5e8ca845ef4dcbee04fbbc11")) software.services অ্যারেতে থেকে "yahoo" মুছে ফেলার কোয়েরি:
> db.demo541.update(
{ _id: ObjectId("5e8ca845ef4dcbee04fbbc11") },
{ $pull: { 'software.services': "yahoo" } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
আপডেটের পর ডকুমেন্টগুলো দেখানো
> db.demo541.find();
আউটপুট:
{ "_id" : ObjectId("5e8ca845ef4dcbee04fbbc11"), "software" : { "services" : [ "gmail", "facebook" ] } }
{ "_id" : ObjectId("5e8ca85cef4dcbee04fbbc12"), "software" : { "services" : [ "whatsapp", "twitter" ] } }
মূল পয়েন্টসমূহ
$pullঅপারেটর শর্তানুযায়ী সব মিলে যাওয়া এলিমেন্ট মুছে দেয় (শুধু প্রথমটি নয়)।- নেস্টেড (nested) অ্যারে এক্সেস করতে ডট নোটেশন (dot notation) ব্যবহার করা হয়:
'software.services'। update()মেথডে প্রথম আর্গুমেন্ট হল ফিল্টার (কোন ডকুমেন্ট আপডেট হবে), দ্বিতীয় আর্গুমেন্ট হল আপডেট অপারেশন।- আধুনিক MongoDB-এ
updateOne()বাupdateMany()ব্যবহার করা উচিত।