Yang terbaik adalah menambahkan sort()
explicit eksplisit kriteria jika Anda menginginkan urutan hasil yang dapat diprediksi.
Dengan asumsi urutan yang Anda cari adalah "urutan penyisipan" dan Anda menggunakan ObjectIds bawaan MongoDB, maka Anda dapat membuat kueri berdasarkan ObjectId:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Perhatikan bahwa contoh ini hanya berfungsi karena:
- empat byte pertama ObjectId dihitung dari stempel waktu gaya unix (lihat:Spesifikasi ObjectId )
- kueri pada
_id
sendiri akan menggunakan_id
default indeks (diurutkan berdasarkan id) untuk menemukan kecocokan
Jadi sungguh, pengurutan implisit ini sama dengan:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Jika Anda menambahkan lebih banyak kriteria ke kueri untuk memenuhi syarat, cara menemukan produk "berikutnya" (misalnya, category
), kueri dapat menggunakan indeks yang berbeda dan urutannya mungkin tidak seperti yang Anda harapkan.
Anda dapat memeriksa penggunaan indeks dengan explain() .