ใช้ $unset แล้วตามด้วย $pull
MongoDB ไม่มีออปอเรเตอร์ลบโดย index ตรงๆ ต้องทำ 2 ขั้นตอน: $unset ตั้งค่า index นั้นเป็น null แล้ว $pull ลบ null ออก
ตัวอย่าง
สร้างคอลเลกชัน getNThElementDemo:
> db.getNThElementDemo.insertOne({"UserName":"John","UserAge":23,"ListOfFriends":["Carol","Sam","Mike","Bob"]});
> db.getNThElementDemo.insertOne({"UserName":"David","UserAge":21,"ListOfFriends":["Chris","Robert"]});
ลบอิลิเมนต์ index 2 (อันที่ 3) ของ John
> db.getNThElementDemo.update({}, {$unset: {"ListOfFriends.2": 1}});
> db.getNThElementDemo.update({}, {$pull: {"ListOfFriends": null}});
ผลลัพธ์:
{ "_id" : ObjectId("..."), "UserName" : "John", "UserAge" : 23, "ListOfFriends" : ["Carol", "Sam", "Bob"] }
{ "_id" : ObjectId("..."), "UserName" : "David", "UserAge" : 21, "ListOfFriends" : ["Chris", "Robert"] }
หมายเหตุ: คำสั่ง update() โดยไม่มีเงื่อนไข {} จะอัปเดตเอกสารแรกเท่านั้น ควรระบุ _id หรือเงื่อนไขเฉพาะเจาะจงในการใช้งานจริง
MongoDB 4.2+ ใช้ $unset ใน update dengan pipeline
รุ่นใหม่รองรับ aggregation pipeline ใน update ทำได้ในขั้นตอนเดียว