sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cuál es la mejor manera de hacer la paginación ajax con MongoDb y Nodejs?

El enfoque de "omitir y limitar" no es muy eficiente cuando se está paginando en un conjunto de datos. Es efectivamente un algoritmo de Shlemiel el Pintor.

Las consultas de rango son mucho más eficientes (cuando son compatibles con índices). Por ejemplo, imaginemos que está mostrando tweets. El tamaño de tu página es 20 y estás en la página 1000 y quieres cargar la página 1001.

Esta consulta

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

es mucho menos eficiente que

db.tweets.find({created_at: {$lt: last_displayed_date}}).
          sort({created_at: -1}).limit(20);

(siempre que tenga un índice en created_at ).

Entiende la idea:cuando cargues una página, toma nota de la marca de tiempo del último tweet y utilízala para consultar la página siguiente.