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

Hvad er den bedste måde at lave ajax-paginering på med MongoDb og Nodejs?

"Spring og begræns"-tilgangen er ikke særlig effektiv, når du bladrer langt ind i datasættet. Det er faktisk en Shlemiel Malerens algoritme.

Områdeforespørgsler er meget mere effektive (når de understøttes af indekser). Lad os for eksempel forestille os, at du viser tweets. Din sidestørrelse er 20, og du er på side 1000 og vil indlæse side 1001.

Denne forespørgsel

db.tweets.find().sort({created_at: -1}).skip(1001*20).limit(20)

er meget mindre effektiv end

db.tweets.find({created_at: {$lt: last_displayed_date}}).
          sort({created_at: -1}).limit(20);

(forudsat at du har indeks på created_at ).

Du får ideen:Når du indlæser en side, skal du notere tidsstemplet for det sidste tweet og bruge det til at forespørge på den næste side.




  1. Lagring af nogle små (under 1 MB) filer med MongoDB i NodeJS UDEN GridFS

  2. mongo:afkastet svarer ikke til antal()

  3. Hvorfor bruger MongoDB ikke indekskryds?

  4. Hvordan kan jeg sortere i, at nuller sidst er bestilt i mongodb?