La canalización de agregación admite operaciones en Colecciones fragmentadas. Esta sección describe los comportamientos específicos de la canalización de agregación y las colecciones fragmentadas.
Comportamiento
Si la tubería comienza con una exacta $matchen una clave de fragmento, y la canalización no contiene etapas o, toda la canalización se ejecuta solo en el fragmento $out $lookup correspondiente.
Cuando las operaciones de agregación se ejecutan en varios fragmentos, los resultados se envían a para fusionarse, excepto en los siguientes mongos casos:
Si la canalización incluye la etapa, la fusión se ejecuta en el fragmento donde se encuentra la colección de
$outsalida.Si la canalización incluye la etapa que hace referencia a una colección no fragmentada, la fusión se ejecuta en el fragmento donde se encuentra la colección no
$lookupfragmentada.Si la canalización incluye una etapa de clasificación o agrupación, y la configuración allowDiskUse está habilitada, la fusión se ejecuta en un fragmento seleccionado 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 tubería, incluya la opción explain db.collection.aggregate() en el método.
Las optimizaciones están sujetas a cambios entre versiones.