ใช้ตัวดำเนินการ $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": "" } })