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

คำสั่ง MongoDB สำหรับลบค่าหลายค่าจากอาร์เรย์ด้วย $pull

การใช้งาน $pull เพื่อลบค่าจากอาร์เรย์ใน MongoDB

เมื่อต้องการลบค่าที่เฉพาะเจาะจงออกจากอาร์เรย์ในเอกสาร MongoDB สามารถใช้ตัวดำเนินการ $pull ร่วมกับตัวเลือก multi: true เพื่อให้การลบเกิดขึ้นกับทุกเอกสารที่ตรงตามเงื่อนไข

ตัวอย่างข้อมูลทดสอบ

ขั้นแรก ให้สร้างคอลเลกชันและเพิ่มเอกสารตัวอย่างดังนี้:

> db.demo392.insertOne({
   Name: 'Chris',
   details: [
     { _id: '101' },
     { _id: '102' }
   ]
});
> db.demo392.insertOne({
   Name: 'Chris',
   details: [
     { _id: '104' },
     { _id: '101' }
   ]
});

แสดงข้อมูลทั้งหมดก่อนการลบ

> db.demo392.find();

ผลลัพธ์ที่ได้:

{
  "_id": ObjectId("5e5d2b3322064be7ab44e802"),
  "Name": "Chris",
  "details": [ { "_id": "101" }, { "_id": "102" } ]
}
{
  "_id": ObjectId("5e5d2b3422064be7ab44e803"),
  "Name": "Chris",
  "details": [ { "_id": "104" }, { "_id": "101" } ]
}

คำสั่งลบค่า _id: '101' ออกจากอาร์เรย์ details

> db.demo392.update(
   {},
   { $pull: { details: { _id: '101' } } },
   { multi: true }
)

ผลลัพธ์: WriteResult({ "nMatched": 2, "nUpserted": 0, "nModified": 2 })

แสดงข้อมูลหลังการลบ

> db.demo392.find();

ผลลัพธ์ที่ได้:

{
  "_id": ObjectId("5e5d2b3322064be7ab44e802"),
  "Name": "Chris",
  "details": [ { "_id": "102" } ]
}
{
  "_id": ObjectId("5e5d2b3422064be7ab44e803"),
  "Name": "Chris",
  "details": [ { "_id": "104" } ]
}

สรุป

  • ใช้ $pull เพื่อลบองค์ประกอบที่ตรงตามเงื่อนไขออกจากอาร์เรย์
  • กำหนด multi: true เพื่อให้มีผลกับทุกเอกสารที่ตรงกับเงื่อนไขค้นหา (query filter)
  • ในตัวอย่าง ใช้ query filter ว่าง {} หมายถึงทุกเอกสารในคอลเลกชัน