Es mejor agregar sort()
explícito criterios si desea un orden predecible de resultados.
Suponiendo que el orden que está buscando es "orden de inserción" y está utilizando los ObjectId generados por defecto de MongoDB, entonces puede consultar en función del ObjectId:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Tenga en cuenta que este ejemplo solo funciona porque:
- los primeros cuatro bytes del ObjectId se calculan a partir de una marca de tiempo de estilo Unix (ver:Especificación de ID de objeto )
- una consulta en
_id
solo usará el_id
predeterminado index (ordenado por id) para encontrar una coincidencia
Realmente, este tipo implícito es lo mismo que:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Si agregó más criterios a la consulta para calificar cómo encontrar el "próximo" producto (por ejemplo, una category
), la consulta podría usar un índice diferente y el orden podría no ser el esperado.
Puede verificar el uso del índice con explain() .