El pipeline de agregación admite operaciones en colecciones fragmentadas. Esta sección describe los comportamientos específicos de la pipeline de agregación y de las colecciones particionadas.
Comportamiento
Si el pipeline comienza con un $match exacto en una clave de partición, y el pipeline no contiene etapas $out o $lookup, todo el pipeline se ejecuta solo en la partición coincidente.
Cuando las operaciones de agregación se ejecutan en múltiples particiones, los resultados se redirigen al mongos para ser combinados, salvo en los siguientes casos:
Si el pipeline incluye la etapa
$out, la fusión se ejecuta en la partición donde reside la colección de salida.Si la pipeline incluye la
$lookupetapa que hace referencia a una colección no particionada, la fusión se ejecuta en la partición donde se encuentra la colección no particionada.Si el pipeline incluye una etapa de clasificación o agrupación, y la configuración de allowDiskUse está habilitada, la fusión se ejecuta en una partición seleccionada aleatoriamente.
Optimización
Al dividir la pipeline de agregación en dos partes, esta se divide para asegurar que las particiones realicen la mayor cantidad posible de etapas, considerando la optimización.
Para ver cómo se dividió la explain pipeline, incluya la opción en el método db.collection.aggregate().
Las optimizaciones están sujetas a cambios entre versiones.