Menu
CoddyTech

Durchschnitte innerhalb von Gruppen

Teil des Abschnitts Datenbanken mit MongoDB der Node.js-Journey von Coddy. Lektion 22 von 29.

Eine Gruppe kann mehrere Zusammenfassungen derselben eingehenden Dokumente berechnen. Der Gruppierungsausdruck legt fest, welche Datensätze zusammengehören; jeder Akkumulator berechnet ein separates Ausgabefeld.

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

Bei zwei Spielern im selben Team mit den Punktzahlen 8 und 12 ist players gleich 2 und averageScore gleich 10. '$score' liest die Punktzahl jedes eingehenden Spielers aus. Wende dieselbe Idee auf Buchjahre an. Den Namen des Ausgabefelds kannst du selbst wählen; der Feldverweis bestimmt die Werte, deren Durchschnitt berechnet wird.

challenge icon

Aufgabe

Einfach

Dies ist ein kleines Übungsprojekt. Die Einrichtung wird bereitgestellt; bearbeite nur exercise.js.

Gruppiere Bücher nach Genre und gib _id, count und averageYear zurück. Sortiere die Ausgabe aufsteigend nach _id. Ergebnis: classic hat count 1 und averageYear 1815; scifi hat count 2 und averageYear 1972.

Probier es selbst

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

Alle Lektionen in Datenbanken mit MongoDB

Übe selbstständig: Express-Playground