Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Pipeline de agregación
/ / /

Límites de la canalización de agregación

Operaciones de agregación con el aggregate El comando tiene las siguientes limitaciones.

El comando aggregate puede devolver un cursor o almacenar los resultados en una colección. Cada documento en el conjunto de resultados está sujeto al límite de tamaño del documento BSON de 16 megabytes. Si algún documento individual supera el Límite de tamaño de documento BSON, la agregación produce un error. El límite solo se aplica a los documentos devueltos. Durante el procesamiento del pipeline, los documentos pueden superar este tamaño. El método db.collection.aggregate() devuelve un cursor por defecto.

MongoDB limita el número de etapas de la canalización de agregación permitidas en un solo pipeline a 1000.

Si un pipeline de agregación supera el límite de etapa antes o después de ser analizada, se recibe un error.

Cada etapa individual de la pipeline tiene un límite de 100 megabytes de RAM. Por defecto, si una etapa supera este límite, MongoDB produce un error. En algunas etapas del pipeline, puedes permitir que el procesamiento del pipeline ocupe más espacio utilizando la opción allowDiskUse para habilitar que las etapas del pipeline de agregación escriban datos en archivos temporales.

La $search etapa de agregación no está restringida a 100 megabytes de RAM porque se ejecuta en un proceso separado.

Los ejemplos de etapas que pueden pasarse al disco cuando allowDiskUse está true son:

  • $bucket

  • $bucketAuto

  • $group

  • $sort cuando la operación de ordenación no está soportada por un índice

  • $sortByCount

Nota

Las etapas del pipeline operan en flujos de documentos, donde cada etapa del pipeline toma documentos, realizando su procesamiento y luego produciendo los documentos resultantes.

Algunas etapas no pueden generar ningún documento hasta que hayan procesado todos los documentos entrantes. Estas etapas del pipeline deben mantener su salida en la RAM hasta que se procesen todos los documentos entrantes. Como resultado, estas etapas de la pipeline pueden requerir más espacio que el límite de 100 MB.

Si los resultados de una de las etapas del pipeline $sort exceden el límite, se debe considerar agregar una etapa $limit.

Los mensajes de registro del Perfilador y los mensajes de registro de diagnóstico incluyen un indicador usedDisk si alguna etapa de agregación guardó datos en archivos temporales debido a restricciones de memoria.

Volver

Optimización

En esta página