Menu
CoddyTech

Promedios dentro de grupos

Parte de la sección Bases de datos con MongoDB del Journey de Node.js de Coddy. Lección 22 de 29.

Un grupo puede calcular varios resúmenes de los mismos documentos de entrada. La expresión de agrupación elige qué registros pertenecen al mismo grupo; cada acumulador calcula un campo de salida distinto.

{$group: {
    _id: '$team',
    players: {$sum: 1},
    averageScore: {$avg: '$score'}
}}

Para dos jugadores del mismo equipo que obtienen 8 y 12 puntos, players es 2 y averageScore es 10. '$score', entre comillas, lee la puntuación de cada jugador de entrada. Aplica la misma idea a los años de publicación de los libros. Tú eliges el nombre del campo de salida; la referencia al campo identifica los valores que se van a promediar.

challenge icon

Desafío

Fácil

Este es un pequeño proyecto de práctica. Se proporciona la configuración; edita solo exercise.js.

Agrupa los libros por género y devuelve _id, el recuento y averageYear. Ordena el resultado por _id en orden ascendente. Ejecuta: classic tiene un recuento de 1 y averageYear de 1815; scifi tiene un recuento de 2 y averageYear de 1972.

Pruébalo tú mismo

export async function exercise(books) {
    return await books
        .aggregate([{ $group: { _id: '$genre', count: { $sum: 1 } } }, { $sort: { _id: 1 } }])
        .toArray();
}

Todas las lecciones de Bases de datos con MongoDB

Practica por tu cuenta: Playground de Express