Médias dentro de grupos
Parte da seção Bancos de dados com MongoDB do Journey de Node.js da Coddy. Lição 22 de 29.
Um grupo pode calcular vários resumos dos mesmos documentos de entrada. A expressão de agrupamento escolhe quais registros pertencem ao mesmo grupo; cada acumulador calcula um campo de saída separado.
{$group: {
_id: '$team',
players: {$sum: 1},
averageScore: {$avg: '$score'}
}}Para dois jogadores do mesmo time que marcam 8 e 12 pontos, players é 2 e averageScore é 10. '$score', entre aspas, lê a pontuação de cada jogador de entrada. Aplique a mesma ideia aos anos dos livros. Você escolhe o nome do campo de saída; a referência ao campo identifica os valores a serem calculados.
Desafio
FácilEste é um pequeno projeto de prática. A configuração já está pronta; edite apenas exercise.js.
Agrupe os livros por gênero e retorne _id, count e averageYear. Ordene a saída por _id em ordem crescente. Execute: classic tem count 1 e averageYear 1815; scifi tem count 2 e averageYear 1972.
Experimente você mesmo
export async function exercise(books) {
return await books
.aggregate([{ $group: { _id: '$genre', count: { $sum: 1 } } }, { $sort: { _id: 1 } }])
.toArray();
}
Todas as lições de Bancos de dados com MongoDB
1Documentos
Um livro como documentoColeções e bancos de dadosConectando-se ao MongoDBLendo documentos armazenadosInserindo documentosEncontrando um documentoEncontrando por ObjectIdComparando númerosFiltros de consultaEscolhendo os campos retornadosOrdenando os resultados da consultaMantendo os primeiros resultadosProjeção, ordenação e limitePratique por conta própria: Playground de Express