Det er bedst at tilføje eksplicit sort()
kriterier, hvis du ønsker en forudsigelig rækkefølge af resultater.
Forudsat at den rækkefølge du leder efter er "indsættelsesrækkefølge", og du bruger MongoDB's standardgenererede ObjectId'er, så kan du forespørge baseret på ObjectId:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Bemærk at dette eksempel kun virker fordi:
- de første fire bytes af ObjectId'et beregnes ud fra et unix-stil tidsstempel (se:ObjectId-specifikation )
- en forespørgsel på
_id
alene vil bruge standard_id
indeks (sorteret efter id) for at finde et match
Så egentlig er denne implicitte sortering den samme som:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Hvis du har tilføjet flere kriterier til forespørgslen for at kvalificere, hvordan finder du det "næste" produkt (f.eks. en category
), kan forespørgslen bruge et andet indeks, og rækkefølgen er muligvis ikke, som du forventer.
Du kan tjekke indeksbrug med explain() .