Много съм разочарован от приетите отговори на този въпрос. Това няма да се мащабира. Ако прочетете дребния шрифт на cursor.skip( ):
Методът cursor.skip() често е скъп, защото изисква от сървъра да върви от началото на колекцията или индекса, за да получи позицията на отместване или пропускане, преди да започне да връща резултат. С увеличаването на отместването (напр. pageNumber по-горе), cursor.skip() ще стане по-бавен и по-интензивен на процесора. При по-големи колекции cursor.skip() може да стане обвързан с IO.
За да постигнете пагинация по мащабируем начин, комбинирайте limit() заедно с поне един критерий за филтриране, дата createdOn отговаря на много цели.
MyModel.find( { createdOn: { $lte: request.createdOnBefore } } )
.limit( 10 )
.sort( '-createdOn' )