MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Trouver le document suivant dans MongoDb

Il est préférable d'ajouter un sort() explicite critères si vous voulez un ordre prévisible des résultats.

En supposant que l'ordre que vous recherchez est "l'ordre d'insertion" et que vous utilisez les ObjectId générés par défaut de MongoDB, vous pouvez interroger en fonction de l'ObjectId :

// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)

Notez que cet exemple ne fonctionne que parce que :

  • les quatre premiers octets de l'ObjectId sont calculés à partir d'un horodatage de style Unix (voir :Spécification d'ObjectId )
  • une requête sur _id seul utilisera le _id par défaut index (trié par identifiant) pour trouver une correspondance

Donc vraiment, ce tri implicite est le même que :

db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);

Si vous avez ajouté plus de critères à la requête pour qualifier comment trouver le produit "suivant" (par exemple, une category ), la requête peut utiliser un index différent et l'ordre peut ne pas être comme prévu.

Vous pouvez vérifier l'utilisation de l'index avec explain() .