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

วิธีลบข้อมูลเฉพาะในเอกสาร MongoDB

ใน 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 ไม่มีผลต่อการทำงาน