Средние значения в группах
Часть раздела Базы данных с MongoDB путешествия по Node.js на Coddy. Урок 22 из 29.
Группа может вычислять несколько сводных значений для одних и тех же входящих документов. Выражение группировки определяет, какие записи объединяются; каждый аккумулятор вычисляет отдельное выходное поле.
{$group: {
_id: '$team',
players: {$sum: 1},
averageScore: {$avg: '$score'}
}}Для двух игроков одной команды, набравших 8 и 12 очков, players равно 2, а averageScore равно 10. Взятие значения '$score' считывает количество очков каждого входящего игрока. Примените ту же идею к годам издания книг. Имя выходного поля выбирайте сами; ссылка на поле указывает значения, которые нужно усреднить.
Задание
ЛегкоЭто небольшой практический проект. Настройка уже выполнена; редактируй только 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