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

¿Paginación eficiente de la agregación de MongoDB?

En los métodos de cursor de MongoDB (es decir, cuando se usa find() ) como limit , sort , skip se puede aplicar en cualquier orden => el orden no importa. Un find() devuelve un cursor sobre el que se aplicaron las modificaciones. La clasificación siempre se realiza antes del límite, la omisión también se realiza antes del límite. Entonces, en otras palabras, el orden es:ordenar -> omitir -> limitar .

El marco de agregación no devuelve un cursor DB. En su lugar, devuelve un documento con resultados de agregación. Funciona produciendo resultados intermedios en cada paso de la canalización y, por lo tanto, el orden de las operaciones realmente importa.

Supongo que MongoDB no admite el orden de los métodos modificadores de cursor debido a la forma en que se implementa internamente.

No puede paginar en un resultado del marco de agregación porque hay un solo documento con resultados solamente. Todavía puede paginar en una consulta regular usando omitir y limitar, pero una mejor práctica sería usar una consulta de rango debido a la eficiencia de usar un índice.

ACTUALIZACIÓN:

Desde v2.6, el marco de agregación de Mongo devuelve un cursor en lugar de un solo documento. Comparar:v2.4 y v2.6 .