El operador $group se utiliza en MongoDB como etapa de agregación para agrupar los documentos de entrada por el valor de un campo o campos especificados. Puede calcular resultados acumulados para los documentos agrupados.
Aquí se detallan los componentes de un operador $group:
- _id: Este es el campo por el cual se agrupará. Esto significa que todos los documentos que tengan el mismo valor en este campo se agruparán juntos.
- Algunos de los operadores de acumulación que puedes usar son: – $sum: Suma un valor específico (por ejemplo, 1 para contar documentos o un campo específico del documento). – $avg: Calcula el promedio de un campo específico del documento. – $min/$max: Devuelve el menor o mayor valor respectivamente de un campo específico del documento. – $push: Inserta un valor a un arreglo.
Aquí hay un ejemplo básico de cómo se podría ver una consulta utilizando $group:
```javascript
db.collection.aggregate([
{
$group:
{
_id: “$campo_para_agrupar”,
total: {$sum: “$campo_para_sumar”},
promedio: {$avg: “$campo_para_promedio”},
minimo: {$min: “$campo_para_minimo”},
maximo: {$max: “$campo_para_maximo”},
arreglo: {$push: “$campo_para_arreglo”}
}
}
])
```
En este ejemplo, `campo_para_agrupar` es el campo por el cual deseas agrupar los documentos. Los otros campos (`campo_para_sumar`, `campo_para_promedio`, etc.) son valores de los documentos que deseas acumular de alguna manera. Cada uno de estos campos se acumulará basándose en la función proporcionada `($sum, $avg, $min, $max, $push)`. Por ejemplo, `total` será la suma de todos los valores `campo_para_sumar` de los documentos agrupados por `campo_para_agrupar`.