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

ลบอิลิเมนต์ที่ n ในอาร์เรย์ MongoDB

ใช้ $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 ทำได้ในขั้นตอนเดียว