Najlepiej dodać jawne sort()
kryteria, jeśli chcesz przewidywać kolejność wyników.
Zakładając, że zamówienie, którego szukasz, to „zamówienie wstawiania” i używasz domyślnych wygenerowanych identyfikatorów obiektów MongoDB, możesz wykonać zapytanie na podstawie identyfikatora obiektu:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Pamiętaj, że ten przykład działa tylko dlatego, że:
- pierwsze cztery bajty ObjectId są obliczane na podstawie uniksowego znacznika czasu (patrz:Specyfikacja identyfikatora obiektu )
- zapytanie o
_id
sam użyje domyślnego_id
indeks (posortowany według identyfikatora), aby znaleźć dopasowanie
Tak naprawdę to sortowanie niejawne jest takie samo jak:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Jeśli do zapytania dodano więcej kryteriów, aby określić, jak znaleźć „następny” produkt (na przykład category
), zapytanie może użyć innego indeksu, a kolejność może nie być taka, jakiej oczekujesz.
Możesz sprawdzić użycie indeksu za pomocą explain() .