"hoppa över och begränsa"-metoden är inte särskilt effektiv när du bläddrar långt in i dataset. Det är faktiskt en Shlemiel the Painters algoritm.
Områdesfrågor är mycket effektivare (när de stöds av index). Låt oss till exempel föreställa oss att du visar tweets. Din sidstorlek är 20 och du är på sida 1000 och vill ladda sida 1001.
Denna fråga
db.tweets.find().sort({created_at: -1}).skip(1001*20).limit(20)
är mycket mindre effektiv än
db.tweets.find({created_at: {$lt: last_displayed_date}}).
sort({created_at: -1}).limit(20);
(förutsatt att du har index på created_at
).
Du förstår:när du laddar en sida, notera tidsstämpeln för den senaste tweeten och använd den för att fråga nästa sida.