ใช้ $pull ลบสมาชิกเฉพาะออกจากอาร์เรย์
โอเปอเรเตอร์ $pull จะลบ ทุกสมาชิก ในอาร์เรย์ที่ตรงตามเงื่อนไขที่ระบุ
ตัวอย่างข้อมูล
> db.removeItemFromArray.insertOne({
"_id": 101,
"StudentName": "Larry",
"StudentSubjects": ["C", "MongoDB", "Java", "MySQL"]
});
คำสั่งลบ "Java" ออกจากอาร์เรย์ StudentSubjects
> db.removeItemFromArray.update(
{},
{ $pull: { StudentSubjects: "Java" } },
{ multi: true }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ผลลัพธ์หลังลบ
> db.removeItemFromArray.find().pretty();
{
"_id" : 101,
"StudentName" : "Larry",
"StudentSubjects" : [ "C", "MongoDB", "MySQL" ]
}
รูปแบบการใช้งานเพิ่มเติม
// ลบด้วยเงื่อนไข (Object)
db.collection.update(
{ _id: 101 },
{ $pull: { "arrayField": { "subField": "value" } } }
);
// ลบหลายค่าพร้อมกันด้วย $in
db.collection.update(
{ _id: 101 },
{ $pull: { "tags": { $in: ["old", "deprecated"] } } }
);
สรุป
$pullลบ ทุกค่า ที่ Match (ไม่ใช่แค่ตัวแรก)- ใช้
multi: true(หรือupdateMany()) เพื่ออัปเดทหลายเอกสาร - รองรับทั้งค่า Primitive และ Object/Sub-document