การดึง element สุดท้ายของ array ใน MongoDB ใช้ projection ด้วย $slice ค่าลบ (-n = n ตัวสุดท้าย) ใช้ได้ทั้ง find() และ aggregate()
สร้างคอลเลกชันและข้อมูลตัวอย่าง
> db.demo173.insertOne({"ListOfValues":[10,40,100,560,700,900]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e383a4f9e4f06af551997e4") }
แสดงข้อมูล
> db.demo173.find().pretty();
ผลลัพธ์: ListOfValues มี 6 elements [10, 40, 100, 560, 700, 900]
Query ดึง 2 ค่าสุดท้ายด้วย $slice ใน Find Projection
> db.demo173.find({}, { "ListOfValues": { "$slice": -2 } });
คำอธิบาย:
- Filter:
{}(ทุกเอกสาร) - Projection:
{"ListOfValues": {"$slice": -2}}- ดึง 2 ตัวสุดท้าย -2: negative = นับจากท้าย (-1 = ตัวสุดท้าย, -2 = 2 ตัวสุดท้าย)
ผลลัพธ์
{ "_id" : ObjectId("5e383a4f9e4f06af551997e4"), "ListOfValues" : [ 700, 900 ] }
$slice ใน Find Projection - รูปแบบทั้งหมด
| Syntax | คำอธิบาย | ตัวอย่าง [10,40,100,560,700,900] |
|---|---|---|
{$slice: 3} | 3 ตัวแรก | [10, 40, 100] |
{$slice: -3} | 3 ตัวสุดท้าย | [560, 700, 900] |
{$slice: [2, 3]} | ข้าม 2 ตัว แล้วเอา 3 ตัว | [100, 560, 700] |
{$slice: [-3, 2]} | นับจากท้าย -3 (index 3) เอา 2 ตัว | [560, 700] |