ใน MongoDB คุณสามารถใช้โอเปอเรเตอร์ $unset เพื่อลบฟิลด์เฉพาะออกจากเอกสารได้ ให้เราสร้างคอลเลกชันพร้อมเอกสารตัวอย่างก่อน:
> db.demo20.insertOne(
{
"ListOfEmployee" : [
{ "EmployeeName1" : "John" },
{ "EmployeeName2" : "Carol" }
],
"EmployeeName2" : []
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e138c3555d0fc6657d21f12") }
คิวรีสำหรับแสดงเอกสารทั้งหมดในคอลเลกชัน:
> db.demo20.find();
ผลลัพธ์ที่ได้:
{ "_id" : ObjectId("5e138c3555d0fc6657d21f12"), "ListOfEmployee" : [ { "EmployeeName1" : "John" }, { "EmployeeName2" : "Carol" } ], "EmployeeName2" : [ ] }
คิวรีสำหรับลบฟิลด์ EmployeeName2 ออกจากเอกสาร:
> db.demo20.update(
{ "EmployeeName2": { "$exists": 1 }},
{ "$unset": { "EmployeeName2": "" } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ตรวจสอบผลลัพธ์อีกครั้งด้วย find():
> db.demo20.find();
ตอนนี้ฟิลด์ EmployeeName2 ถูกลบออกแล้ว:
{ "_id" : ObjectId("5e138c3555d0fc6657d21f12"), "ListOfEmployee" : [ { "EmployeeName1" : "John" }, { "EmployeeName2" : "Carol" } ] }
สรุป
- ใช้
$unsetร่วมกับupdate()เพื่อลบฟิลด์เฉพาะ - เงื่อนไข
{ "$exists": 1 }ใช้เพื่อค้นหาเอกสารที่มีฟิลด์นั้นอยู่ - ค่าว่าง
""ใน$unsetเป็นเพียง placeholder ไม่มีผลต่อการทำงาน