MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Trovare il prossimo documento in MongoDb

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