Goede vraag!
"Hoeveel is te veel?" - dat hangt natuurlijk af van uw gegevensgrootte en prestatie-eisen. Persoonlijk voel ik me ongemakkelijk als ik meer dan 500-1000 records oversla.
Het daadwerkelijke antwoord hangt af van uw vereisten. Dit is wat moderne sites doen (of in ieder geval sommige ervan).
Ten eerste ziet de navigatiebalk er als volgt uit:
1 2 3 ... 457
Ze krijgen het uiteindelijke paginanummer van het totale aantal records en het paginaformaat. Laten we naar pagina 3 springen. Dat houdt in dat er wat overgeslagen wordt van de eerste plaat. Wanneer de resultaten binnenkomen, kent u de ID van het eerste record op pagina 3.
1 2 3 4 5 ... 457
Laten we wat meer overslaan en naar pagina 5 gaan.
1 ... 3 4 5 6 7 ... 457
Je snapt het idee. Op elk punt ziet u de eerste, laatste en huidige pagina's, en ook twee pagina's vooruit en achteruit vanaf de huidige pagina.
Vragen
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});