Det är bäst att lägga till explicit sort()
kriterier om du vill ha en förutsägbar resultatordning.
Om du antar att ordningen du är ute efter är "insättningsordning" och du använder MongoDB:s standardgenererade ObjectIds, då kan du fråga baserat på ObjectId:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Observera att det här exemplet bara fungerar för att:
- de första fyra byten av ObjectId beräknas från en unix-stil tidsstämpel (se:ObjectId-specifikation )
- en fråga på
_id
ensam kommer att använda standardvärdet_id
index (sorterat efter id) för att hitta en matchning
Så egentligen är den här implicita sorten densamma som:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Om du har lagt till fler kriterier i frågan för att kvalificera hur du hittar "nästa" produkt (till exempel en category
), kan frågan använda ett annat index och ordningen kanske inte blir som du förväntar dig.
Du kan kontrollera indexanvändning med explain() .