sql >> Databasteknik >  >> NoSQL >> MongoDB

Hitta nästa dokument i MongoDb

Det är bäst att lägga till explicit sort() kriterier om du vill ha en förutsägbar resultatordning.

Om du antar att ordningen du är ute efter är "insättningsordning" och du använder MongoDB:s standardgenererade ObjectIds, då kan du fråga baserat på ObjectId:

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

Observera att det här exemplet bara fungerar för att:

  • de första fyra byten av ObjectId beräknas från en unix-stil tidsstämpel (se:ObjectId-specifikation )
  • en fråga på _id ensam kommer att använda standardvärdet _id index (sorterat efter id) för att hitta en matchning

Så egentligen är den här implicita sorten densamma som:

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

Om du har lagt till fler kriterier i frågan för att kvalificera hur du hittar "nästa" produkt (till exempel en category ), kan frågan använda ett annat index och ordningen kanske inte blir som du förväntar dig.

Du kan kontrollera indexanvändning med explain() .



  1. MongoDB Aggregate funktion i C#

  2. Jämför två matrisfält i samma dokument

  3. Översätt FilterDefinition<TDocument> till vanlig json mongo-fråga som jag kan köra i ett mongo-skal

  4. Golang + MongoDB inbäddad typ (bäddar in en struktur i en annan struktur)