Het is het beste om expliciete sort()
. toe te voegen criteria als u een voorspelbare volgorde van resultaten wilt.
Ervan uitgaande dat de volgorde die u zoekt "invoegvolgorde" is en u MongoDB's standaard gegenereerde ObjectIds gebruikt, dan kunt u een query uitvoeren op basis van de ObjectId:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Merk op dat dit voorbeeld alleen werkt omdat:
- de eerste vier bytes van de ObjectId worden berekend op basis van een tijdstempel in Unix-stijl (zie:ObjectId-specificatie )
- een zoekopdracht op
_id
alleen gebruikt de standaard_id
index (gesorteerd op id) om een match te vinden
Dus eigenlijk is deze impliciete sortering hetzelfde als:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Als u meer criteria aan de zoekopdracht heeft toegevoegd om te kwalificeren hoe u het "volgende" product kunt vinden (bijvoorbeeld een category
), kan de zoekopdracht een andere index gebruiken en is de volgorde mogelijk niet zoals u verwacht.
U kunt het indexgebruik controleren met explain() .