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

MongoDB: ยกเลิกฟิลด์/ออบเจ็กต์ด้วย $unset

ใช้ $unset เพื่อลบฟิลด์หรือ embedded object ออกจากเอกสาร สร้างคอลเลกชันตัวอย่าง:

> 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();

ลบ object studentDetails ออกจากทุกเอกสาร (multi: true):

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

ตรวจสอบผลลัพธ์ (details กลายเป็น empty object):

> db.demo348.find();

ผลลัพธ์:

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

รายละเอียด $unset

  • รูปแบบ: {$unset: {"fieldName": ""}} ค่าว่างเป็น placeholder
  • ลบฟิลด์ top-level: {$unset: {"field": ""}}
  • ลบ nested field: {$unset: {"parent.child": ""}}
  • ลบในอาร์เรย์: {$unset: {"arrayField.0.field": ""}} (ลบฟิลด์ในสมาชิก index 0)
  • multi: true อัปเดตทุกเอกสารที่ match (default false ใน update())
  • MongoDB ใหม่: ใช้ updateMany({}, {$unset: {...}})