MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Encontrando o próximo documento no MongoDb


É 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() .