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.
Desafío
FácilEste 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
1Documentos
Un libro como documentoColecciones y bases de datosConexión a MongoDBLectura de documentos almacenadosInserción de documentosBúsqueda de un documentoBúsqueda por ObjectIdComparación de númerosFiltros de consultaSelección de los campos devueltosOrdenación de los resultados de consultaConservar los primeros resultadosProyección, ordenación y límite2Modificación de documentos
Actualización de documentosOperadores de actualización3Agregación
Contar documentosUna canalización de etapasAgrupar con $groupPromedios dentro de gruposFiltrar resultados de gruposCanalizaciones de agregaciónUnir con $lookupPractica por tu cuenta: Playground de Express