ใช้ skip() และ limit() สำหรับ Pagination
รูปแบบมาตรฐาน: find().skip((page-1)*pageSize).limit(pageSize)
ตัวอย่าง
สร้างคอลเลกชัน paginationDemo 5 รายการ:
> db.paginationDemo.insertOne({"CustomerName":"Chris","CustomerAge":23});
> db.paginationDemo.insertOne({"CustomerName":"Robert","CustomerAge":26});
> db.paginationDemo.insertOne({"CustomerName":"David","CustomerAge":24});
> db.paginationDemo.insertOne({"CustomerName":"Carol","CustomerAge":28});
> db.paginationDemo.insertOne({"CustomerName":"Bob","CustomerAge":29});
หน้าแรก (Page 1) - ข้าม 0 แสดง 3
> db.paginationDemo.find().skip(0).limit(3);
ผลลัพธ์:
{ "_id" : ObjectId("..."), "CustomerName" : "Chris", "CustomerAge" : 23 }
{ "_id" : ObjectId("..."), "CustomerName" : "Robert", "CustomerAge" : 26 }
{ "_id" : ObjectId("..."), "CustomerName" : "David", "CustomerAge" : 24 }
หน้าที่ 2 - ข้าม 3 แสดง 3
> db.paginationDemo.find().skip(3).limit(3);
ผลลัพธ์: Carol, Bob
ข้อควรระวัง
- skip() ทำงานช้าเมื่อข้ามจำนวนมาก (ต้องสแกนผ่าน) เหมาะกับข้อมูลไม่ใหญ่
- ข้อมูลใหญ่ควรใช้ Range-based Pagination (ใช้ _id หรือ timestamp เป็น cursor)
- ควรมี sort() เพื่อให้ลำดับคงที่