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

Find det næste dokument i MongoDb

Det er bedst at tilføje eksplicit sort() kriterier, hvis du ønsker en forudsigelig rækkefølge af resultater.

Forudsat at den rækkefølge du leder efter er "indsættelsesrækkefølge", og du bruger MongoDB's standardgenererede ObjectId'er, så kan du forespørge baseret på ObjectId:

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

Bemærk at dette eksempel kun virker fordi:

  • de første fire bytes af ObjectId'et beregnes ud fra et unix-stil tidsstempel (se:ObjectId-specifikation )
  • en forespørgsel på _id alene vil bruge standard _id indeks (sorteret efter id) for at finde et match

Så egentlig er denne implicitte sortering den samme som:

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

Hvis du har tilføjet flere kriterier til forespørgslen for at kvalificere, hvordan finder du det "næste" produkt (f.eks. en category ), kan forespørgslen bruge et andet indeks, og rækkefølgen er muligvis ikke, som du forventer.

Du kan tjekke indeksbrug med explain() .



  1. MongoDB vs. Redis vs. Cassandra for en hurtigskrivende, midlertidig rækkelagringsløsning

  2. Skift type felt inde i mongoDB aggregering, og bruger $lookup indeks på felter eller ej?

  3. Kan ikke få en dækket forespørgsel til sharded collection i MongoDB

  4. Tilfældig stikprøve fra MongoDB returnerer stærkt skæve resultater