2.11. Agregaciones en MongoDB
Para trabajar a fondo con los elementos de un array es mejor utilizar el framework aggregation
que nos permite MongoDB muchas opciones y realizar tuberías pipelines para gestionar la información almacenada.
Operaciones de agregaciones
Las operaciones de agregación son herramientas de MQL que nos ayudan a procesar documentos y a retornar resultados calculados. Las operaciones de agregación se utilizan mayoritariamente para:
- Agrupar valores de varios documentos.
- Procesamiento y operaciones para el retorno de resultados.
- Analizar cambios de datos a lo largo del tiempo.
Tuberías y transformaciones
Para realizar el procesamiento de documentos, MongoDB se basa en el patrón de filtro de tubería, utilizado comúnmente en arquitecturas de software. Este patrón consta de una o más etapas, en donde cada etapa efectúa una operación con los datos de entrada, y la salida o resultado se la entrega a la siguiente etapa para su procesamiento.
Para aplicar este patrón, MongoDB utiliza una serie de operadores ya definidos para poder procesar documentos.
Los operadores más utilizados en tuberías:
- Filtrado de documentos con criterios:
$match
. - Orden de documentos:
$sort
. - Selección de campos en específico:
$project
. - Agrupación de documentos:
$group
. - Sacar los elementos de un array:
$unwind
.
Sería necesario otro curso para profundizar en todas las opciones que nos ofrece MongoDB.
Veamos un ejemplo de una operación de agregación. La función aggregate()
.
Entre muchas otras opciones, aggregate
nos permite sacar los elementos de un array con el operador $unwind
, hacer agrupaciones con $group
y contar con $sum
.
Vamos a contar cuántos genes contiene cada hebra del ADN del cromosoma 1.
db.getCollection('chr1').aggregate([{$unwind:"$knownGene"},{$group:{_id:"$knownGene.strand",cantidad:{$sum:1}}}])