Am besten fügen Sie explizit sort()
hinzu Kriterien, wenn Sie eine vorhersagbare Reihenfolge der Ergebnisse wünschen.
Angenommen, die Reihenfolge, nach der Sie suchen, ist „Einfügungsreihenfolge“ und Sie verwenden die standardmäßig generierten ObjectIds von MongoDB, dann können Sie eine Abfrage basierend auf der ObjectId:
durchführen// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Beachten Sie, dass dieses Beispiel nur funktioniert, weil:
- Die ersten vier Bytes der ObjectId werden aus einem Zeitstempel im Unix-Stil berechnet (siehe:ObjectId-Spezifikation )
- eine Abfrage auf
_id
allein verwendet die Standard-_id
Index (nach ID sortiert), um eine Übereinstimmung zu finden
Also wirklich, diese implizite Sortierung ist dasselbe wie:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Wenn Sie der Abfrage weitere Kriterien hinzugefügt haben, um zu qualifizieren, wie das „nächste“ Produkt zu finden ist (z. B. eine category
), könnte die Abfrage einen anderen Index verwenden und die Reihenfolge ist möglicherweise nicht wie erwartet.
Sie können die Indexnutzung mit explain() überprüfen .