MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Qual é a melhor maneira de fazer paginação ajax com MongoDb e Nodejs?


A abordagem "pular e limitar" não é muito eficiente quando você está paginando muito no conjunto de dados. É efetivamente um algoritmo de Shlemiel, o Pintor.

As consultas de intervalo são muito mais eficientes (quando suportadas por índices). Por exemplo, vamos imaginar que você está exibindo tweets. O tamanho da sua página é 20 e você está na página 1000 e deseja carregar a página 1001.

Esta consulta
db.tweets.find().sort({created_at: -1}).skip(1001*20).limit(20)

é muito menos eficiente do que
db.tweets.find({created_at: {$lt: last_displayed_date}}).
          sort({created_at: -1}).limit(20);

(desde que você tenha índice em created_at ).

Você entendeu:quando você carrega uma página, anote o timestamp do último tweet e use-o para consultar a próxima página.