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

คิวรี MongoDB ลบรายการออกจากอาร์เรย์

ใช้ $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