Ordenar y paginar

Ordena los resultados y pásalos por páginas sin recorrer de más.

Ordena los resultados con sort y pásalos por páginas. Sin sort, TeselaDB devuelve los documentos en el orden de su clave, que no tiene por qué ser el de inserción.

Requisitos

  • Una conexión con un usuario que tenga read sobre la base.
  • Un índice sobre el campo por el que ordenas.

Ordenar

JavaScript
db.pedidos.find({ estado: "pagado" }).sort({ creado: -1 }).limit(20);

Paginar por un valor

Pide la página siguiente a partir del último valor que viste, sin saltar documentos con skip:

JavaScript
db.pedidos
  .find({ estado: "pagado", creado: { $lt: ultimoCreado } })
  .sort({ creado: -1 })
  .limit(20);

Comprobar

Cada página trae 20 documentos y la siguiente empieza donde acabó la anterior.

Problemas frecuentes

  • skip con un número grande recorre todos los documentos saltados en cada página.
  • Sin un índice que cubra el orden, la ordenación puede volcar a disco o fallar con QueryExceededMemoryLimitNoDiskUseAllowed (292).

Ver también