การลบเอกสารใน 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({}) จะลบข้อมูลทั้งหมดในคอลเลกชัน