Jsem velmi zklamán přijatými odpověďmi v této otázce. Toto nebude škálovat. Pokud si přečtete drobné písmo na kurzor.skip():
Metoda kurzor.skip() je často drahá, protože vyžaduje, aby server prošel od začátku kolekce nebo indexu, aby získal pozici posunutí nebo přeskočení, než začne vracet výsledek. Jak se offset (např. pageNumber výše) zvyšuje, bude kurzor.skip() pomalejší a náročnější na CPU. U větších kolekcí se může kurzor.skip() stát IO.
Chcete-li dosáhnout stránkování škálovatelným způsobem, zkombinujte limit() spolu s alespoň jedním kritériem filtru, datum createdOn vyhovuje mnoha účelům.
MyModel.find( { createdOn: { $lte: request.createdOnBefore } } )
.limit( 10 )
.sort( '-createdOn' )