Menu
CoddyTech

Средние значения в группах

Часть раздела Базы данных с MongoDB путешествия по Node.js на Coddy. Урок 22 из 29.

Группа может вычислять несколько сводных значений для одних и тех же входящих документов. Выражение группировки определяет, какие записи объединяются; каждый аккумулятор вычисляет отдельное выходное поле.

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

Для двух игроков одной команды, набравших 8 и 12 очков, players равно 2, а averageScore равно 10. Взятие значения '$score' считывает количество очков каждого входящего игрока. Примените ту же идею к годам издания книг. Имя выходного поля выбирайте сами; ссылка на поле указывает значения, которые нужно усреднить.

challenge icon

Задание

Легко

Это небольшой практический проект. Настройка уже выполнена; редактируй только exercise.js.

Сгруппируй книги по жанру и верни _id, количество и averageYear. Отсортируй результат по _id по возрастанию. Результат: для classic количество равно 1, а averageYear — 1815; для scifi количество равно 2, а averageYear — 1972.

Попробуйте сами

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

Все уроки раздела Базы данных с MongoDB

Потренируйтесь самостоятельно: Песочница Express