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});