การตัดอาร์เรย์ด้วย $slice และระบุช่วงตำแหน่ง
ตัวดำเนินการ $slice ใน MongoDB สามารถรับพารามิเตอร์ 2 ค่า เพื่อระบุ ตำแหน่งเริ่มต้น และ จำนวนองค์ประกอบที่ต้องการ (range) ได้
ตัวอย่างข้อมูลทดสอบ
> db.demo54.insertOne({
"ListOfValues": [100, 2030, 5353, 7364, 635, 535, 524, 423, 2434, 1323, 799874, 90]
});
แสดงข้อมูลทั้งหมด
> db.demo54.find().pretty();
ผลลัพธ์:
{
"_id": ObjectId("5e27151ecfb11e5c34d89914"),
"ListOfValues": [100, 2030, 5353, 7364, 635, 535, 524, 423, 2434, 1323, 799874, 90]
}
คำสั่งใช้ $slice ระบุเริ่มต้นที่ตำแหน่ง 5 จำนวน 3 ค่า
> db.demo54.find({}, { "ListOfValues": { $slice: [5, 3] } }).pretty();
ผลลัพธ์ที่ได้
{
"_id": ObjectId("5e27151ecfb11e5c34d89914"),
"ListOfValues": [535, 524, 423]
}
คำอธิบายพารามิเตอร์ $slice: [skip, limit]
- ค่าแรก (5): ข้าม 5 องค์ประกอบแรก (ดัชนี 0-4) เริ่มที่ดัชนี 5
- ค่าที่สอง (3): นำองค์ประกอบต่อเนื่อง 3 ค่า (ดัชนี 5, 6, 7)
หมายเหตุ: ดัชนีเริ่มต้นที่ 0 ดังนั้นตำแหน่ง 5 คือค่าลำดับที่ 6 ในอาร์เรย์