ใช้ $unset ลบฟิลด์ออกจากเอกสาร
โอเปอเรเตอร์ $unset ลบฟิลด์ที่ระบุออกจากเอกสาร ทำให้ฟิลด์นั้นหายไปสมบูรณ์ (ไม่ใช่เซตเป็น null)
ตัวอย่างข้อมูล
> db.removeKeyFieldsDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Doe","StudentAge":23});
> db.removeKeyFieldsDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Smith","StudentAge":21});
คำสั่งลบฟิลด์ StudentAge จากทุกเอกสาร
> db.removeKeyFieldsDemo.updateMany({}, {$unset: {StudentAge: 1}});
{ "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2 }
ผลลัพธ์: StudentAge หายไป
> db.removeKeyFieldsDemo.find().pretty();
{ "_id" : ObjectId("5cc6c8289cb58ca2b005e672"), "StudentFirstName" : "John", "StudentLastName" : "Doe" }
{ "_id" : ObjectId("5cc6c8359cb58ca2b005e673"), "StudentFirstName" : "John", "StudentLastName" : "Smith" }
รายละเอียด
{$unset: { fieldName: 1 }}- ค่า1เป็นเพียง Placeholder (ใส่อะไรก็ได้)updateMany({}, ...)- ฟิลเตอร์ว่าง = ทุกเอกสาร- ลบหลายฟิลด์พร้อมกัน:
{$unset: { field1: 1, field2: 1, field3: 1 }}
ความแตกต่าง $unset vs $set: { field: null }
| คำสั่ง | ผลลัพธ์ | Field มีอยู่ใน Document? |
|---|---|---|
$unset: { field: 1 } | Field หายไป | ❌ ไม่มี |
$set: { field: null } | Field มีค่า null | ✅ มี (ค่า null) |
ใช้งานกับ Nested Field
// ลบฟิลด์ย่อย
db.collection.updateMany({}, { $unset: { "address.zipcode": 1 } });
// ลบ Object ทั้งตัว
db.collection.updateMany({}, { $unset: { "address": 1 } });