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

Paginación a distancia de MongoDB

¡Buena pregunta!

"¿Cuántos son demasiadas?" - eso, por supuesto, depende del tamaño de los datos y los requisitos de rendimiento. Personalmente, me siento incómodo cuando me salto más de 500 a 1000 registros.

La respuesta real depende de sus requisitos. Esto es lo que hacen los sitios modernos (o, al menos, algunos de ellos).

Primero, la barra de navegación se ve así:

1 2 3 ... 457

Obtienen el número de página final del recuento total de registros y el tamaño de página. Pasemos a la página 3. Eso implicará saltar un poco desde el primer registro. Cuando llegan los resultados, conoce la identificación del primer registro en la página 3.

1 2 3 4 5 ... 457

Saltémonos un poco más y vayamos a la página 5.

1 ... 3 4 5 6 7 ... 457

Entiendes la idea. En cada punto, verá la primera, la última y la página actual, y también dos páginas hacia adelante y hacia atrás desde la página actual.

Consultas

var current_id; // id of first record on current page.

// go to page current+N
db.collection.find({_id: {$gte: current_id}}).
              skip(N * page_size).
              limit(page_size).
              sort({_id: 1});

// go to page current-N
// note that due to the nature of skipping back,
// this query will get you records in reverse order 
// (last records on the page being first in the resultset)
// You should reverse them in the app.
db.collection.find({_id: {$lt: current_id}}).
              skip((N-1)*page_size).
              limit(page_size).
              sort({_id: -1});