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

วิธีลบเอกสาร (Delete Document) ใน MongoDB

การลบเอกสารใน MongoDB สามารถทำได้ด้วย method remove() (รุ่นเก่า) หรือ deleteOne()/deleteMany() (รุ่นใหม่แนะนำ) ตัวอย่างนี้ใช้ remove() เพื่อลบเอกสารที่ตรงเงื่อนไข

สร้างคอลเลกชันและข้อมูลตัวอย่าง

> db.demo79.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bdb2271bf0181ecc42293") }
> db.demo79.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bdb2671bf0181ecc42294") }
> db.demo79.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bdb2971bf0181ecc42295") }
> db.demo79.insertOne({"Name":"Mike"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bdb2c71bf0181ecc42296") }

แสดงข้อมูลก่อนลบ

> db.demo79.find();

ผลลัพธ์:

{ "_id" : ObjectId("5e2bdb2271bf0181ecc42293"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2bdb2671bf0181ecc42294"), "Name" : "David" }
{ "_id" : ObjectId("5e2bdb2971bf0181ecc42295"), "Name" : "Bob" }
{ "_id" : ObjectId("5e2bdb2c71bf0181ecc42296"), "Name" : "Mike" }

Query ลบเอกสารที่ Name = "Bob"

> db.demo79.remove({"Name":"Bob"});
WriteResult({ "nRemoved" : 1 })

แสดงข้อมูลหลังลบ

> db.demo79.find();

ผลลัพธ์ (Bob ถูกลบแล้ว):

{ "_id" : ObjectId("5e2bdb2271bf0181ecc42293"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2bdb2671bf0181ecc42294"), "Name" : "David" }
{ "_id" : ObjectId("5e2bdb2c71bf0181ecc42296"), "Name" : "Mike" }

คำอธิบาย:

  • remove({"Name":"Bob"}): ลบ ทุกเอกสาร ที่ Name เท่ากับ "Bob"
  • WriteResult({ "nRemoved" : 1 }): แสดงจำนวนเอกสารที่ถูกลบ

วิธีใหม่ที่แนะนำ (MongoDB 3.2+)

// ลบเอกสารเดียวที่ตรงเงื่อนไขแรก
db.demo79.deleteOne({"Name": "Bob"})

// ลบทุกเอกสารที่ตรงเงื่อนไข
db.demo79.deleteMany({"Name": "Bob"})

ข้อแตกต่าง: deleteOne/deleteMany ให้ควบคุมได้ชัดเจนกว่า และคืนค่า acknowledged, deletedCount ที่อ่านง่ายกว่า

ข้อควรระวัง: remove() โดยไม่มีเงื่อนไข db.collection.remove({}) จะลบข้อมูลทั้งหมดในคอลเลกชัน