Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

Este é 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

Pratique por conta própria: Playground de Express