ใช้เมธอด remove() ร่วมกับ ObjectId เพื่อลบเอกสารเฉพาะรายการตาม _id
รูปแบบคำสั่ง
db.collectionName.remove({ "_id": ObjectId("yourObjectId") });
ตัวอย่างเต็มรูปแบบ
1. สร้างข้อมูลตัวอย่าง
> db.removeDocumentOnBasisOfId.insertOne({"UserName":"Larry","UserAge":23,"UserCountryName":"US"});
> db.removeDocumentOnBasisOfId.insertOne({"UserName":"Sam","UserAge":21,"UserCountryName":"UK"});
> db.removeDocumentOnBasisOfId.insertOne({"UserName":"Chris","UserAge":24,"UserCountryName":"US"});
> db.removeDocumentOnBasisOfId.insertOne({"UserName":"Robert","UserAge":26,"UserCountryName":"UK"});
> db.removeDocumentOnBasisOfId.insertOne({"UserName":"David","UserAge":28,"UserCountryName":"AUS"});
2. แสดงข้อมูลก่อนลบ
> db.removeDocumentOnBasisOfId.find().pretty();
{ "_id" : ObjectId("5c986f9f..."), "UserName" : "Larry", "UserAge" : 23, "UserCountryName" : "US" }
{ "_id" : ObjectId("5c986fb4..."), "UserName" : "Sam", "UserAge" : 21, "UserCountryName" : "UK" }
{ "_id" : ObjectId("5c986fc0..."), "UserName" : "Chris", "UserAge" : 24, "UserCountryName" : "US" }
{ "_id" : ..., "UserName" : "Robert", "UserAge" : 26, "UserCountryName" : "UK" }
{ "_id" : ..., "UserName" : "David", "UserAge" : 28, "UserCountryName" : "AUS" }
3. ลบเอกสารของ Chris (รู้ _id)
> db.removeDocumentOnBasisOfId.remove({ "_id": ObjectId("5c986fc0330fd0aa0d2fe4a5") });
WriteResult({ "nRemoved" : 1 })
4. ตรวจสอบหลังลบ
> db.removeDocumentOnBasisOfId.find().pretty();
{ "_id" : ..., "UserName" : "Larry", ... }
{ "_id" : ..., "UserName" : "Sam", ... }
{ "_id" : ..., "UserName" : "Robert", ... }
{ "_id" : ..., "UserName" : "David", ... }
Chris ถูกลบออกแล้ว
คำสั่งลบสมัยใหม่ (MongoDB 3.2+)
// ลบ 1 รายการ (แนะนำ)
db.collection.deleteOne({ "_id": ObjectId("...") });
// ลบหลายรายการ
db.collection.deleteMany({ "_id": { $in: [ObjectId("..."), ObjectId("...")] } });
สรุป
- ใช้
remove({ _id: ObjectId("...") })สำหรับ shell แบบเก่า - แนะนำใช้
deleteOne()หรือdeleteMany()ในโค้ด production - ต้องใช้
ObjectId()ครอบ _id ถ้าเป็น ObjectId (ไม่ใช่ string) nRemoved: 1แสดงว่าลบสำเร็จ 1 รายการ