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

วิธีลบฟิลด์/ออบเจ็กต์ใน MongoDB ด้วย $unset

ใช้ตัวดำเนินการ $unset ร่วมกับ update() หรือ updateMany() เพื่อลบฟิลด์หรือออบเจ็กต์ซ้อนออกจากเอกสาร

ตัวอย่างข้อมูลทดสอบ (ออบเจ็กต์ซ้อน details.studentDetails)

> 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" } }
}

ลบออบเจ็กต์ studentDetails ทั้งหมด (multi: true = ทุกเอกสาร)

> db.demo348.update({}, {$unset: { "details.studentDetails": "" }}, {multi: true});
WriteResult({ "nMatched": 2, "nUpserted": 0, "nModified": 2 })

ตรวจสอบหลังลบ (details เหลือออบเจ็กต์ว่าง)

> db.demo348.find();

ผลลัพธ์

{
  "_id": ObjectId("5e553556f8647eb59e5620b2"),
  "details": {}
}
{
  "_id": ObjectId("5e553563f8647eb59e5620b3"),
  "details": {}
}

สรุป:

  • $unset: { "fieldName": "" } - ลบฟิลด์ระดับบนสุด
  • $unset: { "parent.child": "" } - ลบฟิลด์ซ้อน (ใช้ Dot Notation)
  • {multi: true} - ใช้กับทุกเอกสารที่ตรงเงื่อนไข (ใน update() แบบเก่า)
  • ใน MongoDB ใหม่ ใช้ updateMany({}, { $unset: { "details.studentDetails": "" } })