Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

ลบฟิลด์ (Key Fields) ใน MongoDB

ใช้ $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 } });