Най-добре е да добавите изрично sort()
критерии, ако искате предвидим ред на резултатите.
Ако приемем, че поръчката, която търсите, е „поръчка за вмъкване“ и използвате генерираните по подразбиране ObjectId от MongoDB, тогава можете да правите заявки въз основа на ObjectId:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Имайте предвид, че този пример работи само защото:
- първите четири байта на ObjectId се изчисляват от клеймо за време в стил unix (вижте:Спецификация на ObjectId )
- заявка за
_id
сам ще използва_id
по подразбиране индекс (сортирани по id), за да намерите съвпадение
Така че наистина това имплицитно сортиране е същото като:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Ако сте добавили още критерии към заявката, за да определите как да намерите „следващия“ продукт (например category
), заявката може да използва различен индекс и редът може да не е такъв, какъвто очаквате.
Можете да проверите използването на индекса с explain() .