El pipeline de agregación admite operaciones en sharded colección. Esta sección describe los comportamientos específicos del pipeline de agregación y de las colecciones particionadas.
Comportamiento
Si el pipeline comienza con un valor exacto $match en una clave de partición, y el pipeline no contiene etapas $out ni $lookup, el pipeline completo 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.