จำกัดจำนวนองค์ประกอบที่คืนกลับมาจากอาร์เรย์ด้วย $slice
ตัวดำเนินการ $slice ใน projection ของ find() ใช้สำหรับจำกัดจำนวนองค์ประกอบที่ต้องการคืนกลับมาจากฟิลด์ที่เป็นอาร์เรย์
ตัวอย่างข้อมูลทดสอบ
> db.demo48.insertOne({ "Name": ["David", "Chris", "Sam", "Mike", "Carol"] });
แสดงข้อมูลทั้งหมด
> db.demo48.find();
ผลลัพธ์:
{ "_id": ObjectId("5e270491cfb11e5c34d89901"), "Name": ["David", "Chris", "Sam", "Mike", "Carol"] }
คำสั่งดึงเฉพาะ 2 รายการแรก
> db.demo48.find({}, { Name: { $slice: 2 } });
ผลลัพธ์ที่ได้
{ "_id": ObjectId("5e270491cfb11e5c34d89901"), "Name": ["David", "Chris"] }
รูปแบบการใช้งาน $slice ใน Projection
- $slice: n (นบวก): ดึง n รายการแรก
- $slice: -n (ลบ): ดึง n รายการสุดท้าย
- $slice: [skip, limit]: ข้าม skip รายการ แล้วดึง limit รายการ
เทคนิคนี้เหมาะสำหรับการแสดงผลแบ่งหน้า (pagination) ของข้อมูลในอาร์เรย์ หรือการแสดงตัวอย่าง (preview) โดยไม่ต้องดึงอาร์เรย์ทั้งหมด