Mongo Aggregate
¿Qué es?
Es una forma que tiene MongoDB de procesar una gran cantidad de documentos de una o más colecciones. Una función de agregación permite agrupar documentos, ordenarlos, separar arreglos y agregar diferentes procesos (pipelines) para que al final se entregue un resultado procesado y deseado.
Algunas opciones son:
- $match: Busca que los documentos que pasen por ese pipeline cumplan ciertas condiciones que filtrarán documentos indeseados.
- $project: Esta operación permite definir cuáles son las propiedades del documento obtenido que van a sobrevivir al siguiente proceso. Por defecto, el campo _id se agrega al resultado final y, en caso de querer omitirlo, se debe hacer de manera explícita:
{ $project: { _id: 0, name: 1 } }
- $lookup: Este proceso es la contraparte al join que podemos ver cuando utilizamos bases de datos relacionales. Permite unir dos documentos en una respuesta.
- $group: Permite agrupar los resultados de las colecciones mediante una o varias condicionales.
- $unwind: Separa o divide un documento tomando en cuenta un campo de tipo arreglo que venga dentro de él. Si el documento cuenta con un arreglo de 3 elementos, este documento se convierte en 3 documentos con la misma información pero cada uno con un elemento del arreglo.
Flujo de trabajo
En Inmersys utilizamos la herramienta de MongoDB Compass para los proyectos en los cuales utilizamos MongoDB para la base de datos. Por lo tanto, para crear una operación de agregación necesitamos ir a MongoDB Compass y seleccionar la base de datos donde queremos hacer esta operación.
Seleccionamos la pestaña de Aggregations y se va a mostrar la ventana anterior.
Para crear una nueva operación damos clic en CREATE NEW
en donde podemos ir agregando pipelines con la ayuda de esta herramienta.
Para agregar un pipeline le damos clic en el botón Add Stage
Una vez desplegado el menú podemos seleccionar el pipeline deseado para ese stage.
Cada stage muestra el resultado en ese punto específico.
Una vez agregados todos los stages, podemos darle clic en EXPORT TO LANGUAGE
para exportar la operación realizada.
La herramienta nos permite seleccionar el lenguaje de programación en el cual queremos exportar la operación.
La localización de este objeto dependerá del tamaño del proyecto, pero se recomienda crear un archivo en el cual se localicen las diferentes operaciones de agregación.
La operación exportada se utiliza dentro de la función aggregate.
Es altamente recomendable agregar un comentario de descripción para las funciones de agregación que se van agregando al proyecto.