Menu
CoddyTech

Średnie w grupach

Część sekcji Bazy danych z MongoDB ścieżki Node.js w Coddy. Lekcja 22 z 29.

Grupa może obliczyć kilka podsumowań dla tych samych dokumentów wejściowych. Wyrażenie grupujące określa, które rekordy należą do siebie; każdy akumulator oblicza osobne pole wynikowe.

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

Gdy dwóch graczy z tej samej drużyny uzyska wyniki 8 i 12, wartość players wynosi 2, a averageScore wynosi 10. Ujęte w cudzysłów '$score' odczytuje wynik każdego gracza z dokumentów wejściowych. Zastosuj ten sam pomysł do lat wydania książek. Nazwa pola wynikowego zależy od Ciebie; odwołanie do pola wskazuje wartości, dla których ma zostać obliczona średnia.

challenge icon

Wyzwanie

Łatwy

To mały projekt ćwiczeniowy. Konfiguracja jest już przygotowana; edytuj tylko exercise.js.

Pogrupuj książki według gatunku i zwróć _id, liczbę i averageYear. Posortuj wyniki rosnąco według _id. Uruchom: classic ma count 1 i averageYear 1815; scifi ma count 2 i averageYear 1972.

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Bazy danych z MongoDB

Poćwicz samodzielnie: Edytor online Express