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

ลบเอกสารเพียง 1 รายการใน MongoDB

ใช้ remove() ร่วมกับ findOne() ลบเอกสารเดียว

ใน MongoDB Legacy API ใช้ remove() แต่ควรระบุเงื่อนไขเฉพาะเจาะจง (โดยเฉพาะ _id) เพื่อลบเพียง 1 เอกสาร

ตัวอย่างข้อมูล

> db.removeOnlyOneDocumentDemo.insertOne({"FirstName":"John","LastName":"Smith"});
> db.removeOnlyOneDocumentDemo.insertOne({"FirstName":"Carol","LastName":"Taylor"});
> db.removeOnlyOneDocumentDemo.insertOne({"FirstName":"David","LastName":"Miller"});

ขั้นตอนลบเฉพาะ David

> var documentValue = db.removeOnlyOneDocumentDemo.findOne({'FirstName':'David'});
> db.removeOnlyOneDocumentDemo.remove({_id: documentValue._id});
WriteResult({ "nRemoved" : 1 })

ผลลัพธ์: เหลือ John และ Carol

> db.removeOnlyOneDocumentDemo.find().pretty();
{ "_id" : ObjectId("5cc6ca2f9cb58ca2b005e674"), "FirstName" : "John", "LastName" : "Smith" }
{ "_id" : ObjectId("5cc6ca399cb58ca2b005e675"), "FirstName" : "Carol", "LastName" : "Taylor" }

⚠️ คำเตือน: remove() ถูก Deprecated แล้ว

MongoDB 3.2+ แนะนำให้ใช้เมธอดใหม่แทน:

// ลบ 1 เอกสาร (แนะนำ)
db.collection.deleteOne({ _id: documentValue._id });

// ลบหลายเอกสาร
db.collection.deleteMany({ FirstName: "David" });

ตัวอย่างแบบใหม่ (Best Practice)

> db.removeOnlyOneDocumentDemo.deleteOne({ FirstName: "David" });
{ "acknowledged" : true, "deletedCount" : 1 }

สรุป

  • ใช้ deleteOne() แทน remove() สำหรับลบ 1 เอกสาร
  • ระบุ Filter ให้เฉพาะเจาะจงที่สุด (ดีที่สุดคือ _id)
  • deleteOne() คืนค่า deletedCount บอกจำนวนที่ลบได้