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

MongoDB varierede paginering

Godt spørgsmål!

"Hvor mange er for mange?" - det afhænger selvfølgelig af din datastørrelse og krav til ydeevne. Jeg føler mig personligt utilpas, når jeg springer mere end 500-1000 poster over.

Det faktiske svar afhænger af dine krav. Her er, hvad moderne websteder gør (eller i det mindste nogle af dem).

For det første ser navbar sådan ud:

1 2 3 ... 457

De får det endelige sidetal fra det samlede rekordantal og sidestørrelse. Lad os springe til side 3. Det vil involvere nogle spring fra den første post. Når resultaterne ankommer, kender du id'et for den første post på side 3.

1 2 3 4 5 ... 457

Lad os springe nogle flere over og gå til side 5.

1 ... 3 4 5 6 7 ... 457

Du forstår ideen. På hvert punkt ser du første, sidste og aktuelle sider, og også to sider frem og tilbage fra den aktuelle side.

Forespørgsler

var current_id; // id of first record on current page.

// go to page current+N
db.collection.find({_id: {$gte: current_id}}).
              skip(N * page_size).
              limit(page_size).
              sort({_id: 1});

// go to page current-N
// note that due to the nature of skipping back,
// this query will get you records in reverse order 
// (last records on the page being first in the resultset)
// You should reverse them in the app.
db.collection.find({_id: {$lt: current_id}}).
              skip((N-1)*page_size).
              limit(page_size).
              sort({_id: -1});


  1. Pipelining vs Batching i Stackexchange.Redis

  2. Sådan erstatter du eksisterende dokumenter, når du importerer en fil til MongoDB

  3. Hvad er den største forskel mellem Redis og Membase?

  4. Indstil standarddato ved indsættelse af dokument med time.Time felt