MongoDB-এ $unset অপারেটর দিয়ে নেস্টেড ফিল্ড বা অবজেক্ট পুরোপুরি মুছে ফেলা
MongoDB-এ একটি ডকুমেন্ট থেকে নির্দিষ্ট ফিল্ড বা নেস্টেড অবজেক্ট পুরোপুরি সরিয়ে ফেলার জন্য $unset অপারেটর ব্যবহার করা হয়। এটি ফিল্ডের মান null করবে না, বরং ফিল্ডটি কী-সহ মুছে ফেলে।
১. কালেকশন ও নেস্টেড ডকুমেন্ট তৈরি
> db.demo348.insertOne({
"details": { "studentDetails": { StudentName: "Robert" } }
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e553556f8647eb59e5620b2") }
> db.demo348.insertOne({
"details": { "studentDetails": { StudentName: "Mike" } }
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e553563f8647eb59e5620b3") }
২. আপডেটের আগে ডকুমেন্টগুলো
> db.demo348.find();
আউটপুট:
{ "_id" : ObjectId("5e553556f8647eb59e5620b2"), "details" : { "studentDetails" : { "StudentName" : "Robert" } } }
{ "_id" : ObjectId("5e553563f8647eb59e5620b3"), "details" : { "studentDetails" : { "StudentName" : "Mike" } } }
৩. $unset দিয়ে নেস্টেড studentDetails অবজেক্ট মুছে ফেলা (Multi: true - সব ডকুমেন্টে)
> db.demo348.update({}, {$unset: { "details.studentDetails": "" }}, {multi: true});
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
ব্যাখ্যা:
{}- ফিল্টার: সব ডকুমেন্ট ম্যাচ।{$unset: {"details.studentDetails": ""}}- ডট নোটেশন দিয়ে নেস্টেড পাথ নির্দিষ্ট করে। মান খালি স্ট্রিং বা ১ যেকোনো কিছু হতে পারে, উপেক্ষা করা হয়।{multi: true}- সব ম্যাচিং ডকুমেন্ট আপডেট (পুরনো সিনট্যাক্স; আধুনিকতেupdateMany)।
৪. আপডেটের পর ডকুমেন্টগুলো
> db.demo348.find();
আউটপুট:
{ "_id" : ObjectId("5e553556f8647eb59e5620b2"), "details" : { } }
{ "_id" : ObjectId("5e553563f8647eb59e5620b3"), "details" : { } }
details অবজেক্টটি আছে, কিন্তু এর ভেতরের studentDetails ফিল্ডটি পুরোপুরি মুছে গেছে। খালি অবজেক্ট {} বাকি থাকেছে।