Vì bộ sưu tập tôi đang phân trang có các giá trị trùng lặp nên tôi phải tạo chỉ mục kết hợp trên ProductName và id.
Tạo chỉ mục tổng hợp
db.ProductGuideItem.ensureIndex({ ProductName:1, _id:1});
Điều này đã giải quyết được vấn đề của tôi.
Tham khảo:https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ
Giả sử bạn có các giá trị sau:
{a:1, b:1}
{a:2, b:1}
{a:2, b:2}
{a:2, b:3}
{a:3, b:1}
Vì vậy, bạn làm điều này cho phân trang dựa trên phạm vi (kích thước trang là 2):
Trang đầu tiên
find().sort({a:1, b:1}).limit(2)
{a:1, b:1}
{a:2, b:1}
Trang thứ 2
find().min({a:2, b:1}).sort({a:1, b:1}).skip(1).limit(2)
{a:2, b:2}
{a:2, b:3}
Trang thứ 3
find().min({a:2, b:3}).sort({a:1, b:1}).skip(1).limit(2)
{a:3, b:1}
Đây là tài liệu cho $ min / max:http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers
Nếu bạn không có các giá trị trùng lặp trong bộ sưu tập của mình, bạn không cần sử dụng min &max hoặc tạo chỉ mục kết hợp. Bạn chỉ có thể sử dụng $ lt &$ gt.