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

การลบเอกสารเฉพาะรายการใน MongoDB ด้วย remove()

ลบเอกสารที่ระบุ _id ด้วยคำสั่ง remove()

คำสั่ง remove() ใช้สำหรับลบเอกสารออกจากคอลเลกชัน สามารถระบุเงื่อนไขการลบได้ (ในที่นี้คือ _id)

ตัวอย่างข้อมูลทดสอบ

> db.demo56.insertOne({ "Name": "Chris" });
> db.demo56.insertOne({ "Name": "David" });
> db.demo56.insertOne({ "Name": "Bob" });

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

> db.demo56.find();

ผลลัพธ์:

{ "_id": ObjectId("5e272e0bcfb11e5c34d89917"), "Name": "Chris" }
{ "_id": ObjectId("5e272e10cfb11e5c34d89918"), "Name": "David" }
{ "_id": ObjectId("5e272e13cfb11e5c34d89919"), "Name": "Bob" }

คำสั่งลบเอกสารที่ _id เท่ากับค่าที่ระบุ

> db.demo56.remove({ _id: ObjectId("5e272e10cfb11e5c34d89918") });

ผลลัพธ์: WriteResult({ "nRemoved": 1 })

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

> db.demo56.find();

ผลลัพธ์:

{ "_id": ObjectId("5e272e0bcfb11e5c34d89917"), "Name": "Chris" }
{ "_id": ObjectId("5e272e13cfb11e5c34d89919"), "Name": "Bob" }

ข้อสังเกตและแนวทางปัจจุบัน

  • remove() ถูก deprecated แล้ว ตั้งแต่ MongoDB 3.2
  • ควรใช้ deleteOne() สำหรับลบ 1 เอกสาร หรือ deleteMany() สำหรับหลายเอกสาร
  • รูปแบบใหม่: db.demo56.deleteOne({ _id: ObjectId("...") })
  • deleteOne() จะลบได้สูงสุด 1 เอกสาร แม้เงื่อนไขจะ match หลายตัว

ความแตกต่างระหว่าง remove() และ deleteOne()

คำสั่งพฤติกรรม
remove(query)ลบทุกเอกสารที่ match (multi: true โดยค่าเริ่มต้น)
remove(query, { justOne: true })ลบ 1 เอกสารที่ match
deleteOne(query)ลบ 1 เอกสารที่ match (แนะนำ)
deleteMany(query)ลบทุกเอกสารที่ match (แนะนำ)