Agrupar y acumular
Al agrupar documentos por una clave, calculas totales o medias por grupo o cuentas sus documentos.
Agrupa documentos por una clave con $group y calcula sobre cada grupo con los acumuladores de MongoDB.
Requisitos
- Una conexión con un usuario que tenga
readsobre la base.
Agrupar y sumar
JavaScript
db.pedidos.aggregate([
{ $match: { estado: "pagado" } },
{ $group: { _id: "$cliente", total: { $sum: "$total" }, pedidos: { $count: {} }, media: { $avg: "$total" } } },
{ $sort: { total: -1 } },
]);Guardar el primero y el último
JavaScript
db.pedidos.aggregate([{ $sort: { creado: 1 } }, { $group: { _id: "$cliente", primero: { $first: "$creado" } } }]);Comprobar
El resultado trae un documento por cliente con sus totales. Para los mismos datos sale siempre en el mismo orden.
Problemas frecuentes
- Un
$groupcon muchísimos grupos necesita más memoria; conallowDiskUsevuelca a disco y no falla.