จำกัดจำนวน Element ในอาร์เรย์ผลลัพธ์ด้วย $slice ใน Aggregation
บทความนี้สาธิตการใช้ $slice ในขั้นตอน $project ของ Aggregation Pipeline เพื่อดึงเฉพาะ N ตัวแรกของอาร์เรย์
ขั้นตอนที่ 1: สร้าง Collection และเพิ่มข้อมูลตัวอย่าง
> db.demo75.insertOne({"Name":["Sam","Mike","Carol","David","Bob","John"]});
{ "acknowledged": true, "insertedId": ObjectId("5e2bcd7671bf0181ecc42278") }
ขั้นตอนที่ 2: แสดงข้อมูลทั้งหมด
> db.demo75.find();
ผลลัพธ์: อาร์เรย์ Name มี 6 ค่า
{ "_id": ObjectId("5e2bcd7671bf0181ecc42278"), "Name": ["Sam", "Mike", "Carol", "David", "Bob", "John"] }
ขั้นตอนที่ 3: ใช้ $slice จำกัด 4 ตัวแรก
> db.demo75.aggregate([
{ $project: { Name: { $slice: ["$Name", 4] } } }
]);
ผลลัพธ์ที่ได้
{ "_id": ObjectId("5e2bcd7671bf0181ecc42278"), "Name": ["Sam", "Mike", "Carol", "David"] }
สรุป: $slice: ["$arrayField", n] ใน $project จะคืนค่า n Element แรกของอาร์เรย์ (n > 0) หรือ n Element สุดท้าย (n < 0) เหมาะสำหรับ Pagination ภายในอาร์เรย์ หรือการ Preview ข้อมูล