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.
Aufgabe
EinfachDies 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
1Dokumente
Ein Buch als DokumentSammlungen und DatenbankenVerbindung zu MongoDB herstellenGespeicherte Dokumente lesenDokumente einfügenEin Dokument findenÜber ObjectId suchenZahlen vergleichenAbfragefilterZurückgegebene Felder auswählenAbfrageergebnisse sortierenDie ersten Ergebnisse behaltenProjektion, Sortierung und Limit3Aggregation
Dokumente zählenEine Pipeline aus StufenGruppieren mit $groupDurchschnitte innerhalb von GruppenGruppenergebnisse filternAggregation-PipelinesVerknüpfen mit $lookupÜbe selbstständig: Express-Playground