È meglio aggiungere sort()
esplicito criteri se desideri un ordine prevedibile dei risultati.
Supponendo che l'ordine che stai cercando sia "ordine di inserimento" e stai utilizzando gli ObjectId generati di default di MongoDB, puoi eseguire query in base a ObjectId:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Nota che questo esempio funziona solo perché:
- i primi quattro byte di ObjectId sono calcolati da un timestamp in stile unix (vedi:Specifica ObjectId )
- una query su
_id
da solo utilizzerà il_id
predefinito index (ordinato per id) per trovare una corrispondenza
Quindi, in realtà, questo ordinamento implicito è lo stesso di:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Se hai aggiunto più criteri alla query per qualificare come trovare il prodotto "successivo" (ad esempio, una category
), la query potrebbe utilizzare un indice diverso e l'ordine potrebbe non essere quello previsto.
Puoi controllare l'utilizzo dell'indice con explain() .