É melhor adicionar
sort()
explícito critérios se desejar uma ordem previsível de resultados. Supondo que o pedido que você procura é "ordem de inserção" e você está usando os ObjectIds gerados padrão do MongoDB, então você pode consultar com base no ObjectId:
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
Observe que este exemplo só funciona porque:
- os primeiros quatro bytes do ObjectId são calculados a partir de um carimbo de data/hora no estilo unix (consulte:Especificação ObjectId )
- uma consulta em
_id
sozinho usará o padrão_id
index (classificado por id) para encontrar uma correspondência
Então, realmente, essa classificação implícita é o mesmo que:
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
Se você adicionou mais critérios à consulta para qualificar como encontrar o "próximo" produto (por exemplo, uma
category
), a consulta pode usar um índice diferente e a ordem pode não ser a esperada. Você pode verificar o uso do índice com explain() .