MongoDB агрегация: $group и $count — примеры

Этот пример агрегации демонстрирует использование операторов $group и $count. Сначала документы группируются по заданным полям с помощью $group, а затем $count подсчитывает количество документов в каждой группе.

Пример агрегации с $group и $count

Рассмотрим примеры использования оператора $group.

Пример 1: Группировка по возрасту

Запрос {$group: { _id: "$age", count: { $sum: 1 } }} группирует документы по полю age и подсчитывает количество документов в каждой группе с помощью $sum: 1. Результат 21 указывает на 21 уникальное значение возраста в коллекции persons.

Пример 2: Группировка по цвету глаз

Запрос {$group: { _id: "$eyeColor", count: { $sum: 1 } }} группирует документы по полю eyeColor. Результат 3 означает три уникальных цвета глаз.

Пример 3: Группировка по цвету глаз и полу

Запрос {$group: { _id: { eyeColor: "$eyeColor", gender: "$gender" }, count: { $sum: 1 } }} группирует документы по полям eyeColor и gender. Результат 6 соответствует шести возможным комбинациям (два пола и три цвета глаз).

Пример 4: Группировка по цвету глаз и возрасту

Запрос {$group: { _id: { eyeColor: "$eyeColor", age: "$age" }, count: { $sum: 1 } }} группирует документы по полям eyeColor и age. Результат 63 (21 возраст * 3 цвета глаз) отражает все возможные комбинации.

Добавление этапа $match

Для фильтрации документов перед группировкой используется оператор $match. Он должен предшествовать $group.

Пример: {$match: { age: { $gte: 25 } }} фильтрует документы, где поле age больше или равно 25. Последующий $group будет работать только с отфильтрованными документами. Результат 48 демонстрирует количество документов, удовлетворяющих условию и последующей группировке.

В следующих разделах будет рассмотрен оператор $sort.

Что будем искать? Например,программа