บทความนี้สาธิตวิธีลบค่าเลขคู่ (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 ทุกตัวที่ตรงเงื่อนไขออกจาก ArrayupdateMany({}, ...)= ใช้ Query ว่าง {} เพื่อ Target ทุกเอกสารในคอลเลกชัน
ตัวอย่างเพิ่มเติม: ลบเลขคี่ (เก็บแต่เลขคู่)
db.collection.updateMany(
{},
{ $pull: { "numbers": { $mod: [2, 1] } } } // เศษ 1 = เลขคี่
);
ตัวอย่าง: ลบค่าที่หาร 3 ลงตัว
db.collection.updateMany(
{},
{ $pull: { "numbers": { $mod: [3, 0] } } }
);