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

ดึงเลขคู่ออกจาก Array ใน MongoDB ด้วย $mod และ $pull

บทความนี้สาธิตวิธีลบค่าเลขคู่ (Even numbers) ออกจาก Array ใน MongoDB โดยใช้ $mod เพื่อตรวจสอบเศษหาร และ $pull เพื่อลบค่าที่ตรงเงื่อนไข

สร้างข้อมูลตัวอย่าง

> db.pullEvenNumbersDemo.insertOne({"AllNumbers":[101,102,104,106,108,109,110,112,14,17,18,21]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd45b072cba06f46efe9eea") }

แสดงข้อมูลก่อนลบ

> db.pullEvenNumbersDemo.find().pretty();
{
  "AllNumbers" : [ 102, 104, 106, 108, 109, 110, 112, 14, 17, 18, 21 ]
}

ลบเลขคู่ออกจาก Array ทั้งหมดในคอลเลกชัน

> db.pullEvenNumbersDemo.updateMany(
  {},
  { "$pull": { "AllNumbers": { "$mod": [ 2, 0 ] } } }
);
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

ตรวจสอบผลลัพธ์ (เหลือแต่เลขคี่)

> db.pullEvenNumbersDemo.find().pretty();
{
  "_id" : ObjectId("5cd45b072cba06f46efe9eea"),
  "AllNumbers" : [ 101, 109, 17, 21 ]
}

คำอธิบายการทำงาน

  • $mod: [2, 0] = หารด้วย 2 แล้วเศษเป็น 0 → เลขคู่
  • $pull = ลบ Element ทุกตัวที่ตรงเงื่อนไขออกจาก Array
  • updateMany({}, ...) = ใช้ Query ว่าง {} เพื่อ Target ทุกเอกสารในคอลเลกชัน

ตัวอย่างเพิ่มเติม: ลบเลขคี่ (เก็บแต่เลขคู่)

db.collection.updateMany(
  {},
  { $pull: { "numbers": { $mod: [2, 1] } } }  // เศษ 1 = เลขคี่
);

ตัวอย่าง: ลบค่าที่หาร 3 ลงตัว

db.collection.updateMany(
  {},
  { $pull: { "numbers": { $mod: [3, 0] } } }
);