ใช้ $pull ร่วมกับ update() เพื่อลบค่าเฉพาะออกจากอาร์เรย์ สร้างคอลเลกชันตัวอย่าง:
> db.demo318.insertOne({Subject:["MySQL","MongoDB","Java"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50ea6df8647eb59e562062") }
> db.demo318.insertOne({Subject:["Spring","Hibernate"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50ea78f8647eb59e562063") }
แสดงข้อมูล:
> db.demo318.find();
ลบค่า "Hibernate" ออกจากอาร์เรย์ Subject:
> db.demo318.update({Subject:"Hibernate"},{$pull:{"Subject":"Hibernate"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ตรวจสอบผลลัพธ์:
> db.demo318.find();
ผลลัพธ์:
{ "_id" : ObjectId("5e50ea6df8647eb59e562062"), "Subject" : [ "MySQL", "MongoDB", "Java" ] }
{ "_id" : ObjectId("5e50ea78f8647eb59e562063"), "Subject" : [ "Spring" ] }
รายละเอียด $pull
- ลบ ทุก สมาชิกในอาร์เรย์ที่ตรงกับเงื่อนไข
- เงื่อนไขสามารถเป็นค่าเท่ากัน, regex, หรือ query operators ได้
- ตัวอย่าง:
{ $pull: { scores: { $lt: 50 } } }ลบคะแนนต่ำกว่า 50 ทั้งหมด - ใน MongoDB 4.2+ ควรใช้
updateOne()หรือupdateMany()แทนupdate()