2011-07-24 6 views
11

en los documentos mongodb que dice: (source)alcance de búsqueda basada mongodb

Desafortunadamente saltar puede ser (muy) costoso y requiere que el servidor pie del principio de la colección, o el índice, para llegar a la posición offset/skip antes de que pueda comenzar a devolver la página de datos (límite). A medida que aumenta el número de página, el salto se volverá más lento y habrá más cpu intensivo, y posiblemente IO obligado, con colecciones más grandes. La paginación basada en el rango proporciona un mejor uso de los índices, pero no le permite saltar fácilmente a una página específica.

¿Qué es la paginación basada en rango y dónde está la documentación para ello?

Respuesta

17

La idea básica es escribir la paginación en el patrón de predicado de consulta.

Por ejemplo, si enumera las publicaciones del foro por fecha y desea mostrar la página siguiente, utilice la fecha de la última publicación en la página actual como predicado. MongoDB puede usar el índice creado en el campo de fecha.

//older posts 
db.forum_posts.find({date: {$lt: ..last_post_date..} }).sort({date: -1}).limit(20); 

Por supuesto, esto se vuelve un poco más complicado si el campo está utilizando para la clasificación no es única.

+0

Gracias, ¿cómo obtengo el 10 antes y el 10 después? – Harry

+0

el ejemplo muestra cómo recuperar los "10 siguientes" elementos, los "10 anteriores" son similares, solo use '{$ gt: ..first_post_on_page_date ..}' –

+0

Recuerde poner un índice en el campo de fecha, de lo contrario lo hace no funciona – Maxence

Cuestiones relacionadas