Tốt nhất là thêm sort()
rõ ràng tiêu chí nếu bạn muốn một thứ tự kết quả có thể dự đoán được.
Giả sử thứ tự bạn đang theo đuổi là "thứ tự chèn" và bạn đang sử dụng các ObjectIds được tạo mặc định của MongoDB, thì bạn có thể truy vấn dựa trên ObjectId:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Lưu ý rằng ví dụ này chỉ hoạt động vì:
- bốn byte đầu tiên của ObjectId được tính từ dấu thời gian kiểu unix (xem: Đặc tả ObjectId )
- một truy vấn trên
_id
một mình sẽ sử dụng_id
mặc định chỉ mục (được sắp xếp theo id) để tìm kết quả phù hợp
Vì vậy, thực sự, loại ngầm định này giống như:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Nếu bạn đã thêm nhiều tiêu chí hơn vào truy vấn để đủ điều kiện cách tìm sản phẩm "tiếp theo" (ví dụ:một category
), truy vấn có thể sử dụng một chỉ mục khác và thứ tự có thể không như bạn mong đợi.
Bạn có thể kiểm tra việc sử dụng chỉ mục với giải thích () .