Mongodb: как группировать и считать
Вы можете использовать следующий синтаксис для группировки и подсчета в MongoDB:
db.collection.aggregate([ { $group : { _id : " $field_name ", count :{ $sum :1}}} ])
Обратите внимание, что имя_поля — это поле, по которому вы хотите выполнить группировку.
В следующих примерах показано, как использовать этот синтаксис с командой по сбору коллекций со следующими документами:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
Пример 1: группировка и подсчет
Мы можем использовать следующий код для группировки по полю «позиция» и подсчета вхождений каждой позиции.
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum :1}}} ])
Это возвращает следующие результаты:
{ _id: ' Forward ', count: 1 } { _id: ' Guard ', count: 3 } { _id: ' Center ', count: 1 }
Это говорит нам:
- Положение «Вперед» появляется 1 раз.
- Позиция «Охранник» появляется 3 раза.
- Положение «Центр» появляется 1 раз.
Пример 2: группировка и подсчет (затем сортировка)
Мы можем использовать следующий код для подсчета вхождений каждой позиции и автоматической сортировки результатов в порядке возрастания :
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum :1}}}, { $sort : { count : 1}} ])
Это возвращает следующие результаты:
{ _id: ' Forward ', count: 1 } { _id: ' Center ', count: 1 } { _id: ' Guard ', count: 3 }
Мы можем использовать -1 в аргументе count, чтобы отсортировать результаты в порядке убывания :
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum :1}}}, { $sort : { count :-1}} ])
Это возвращает следующие результаты:
{ _id: ' Guard ', count: 3 } { _id: ' Forward ', count: 1 } { _id: ' Center ', count: 1 }
Примечание . Полную документацию по $group можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:
MongoDB: как группировать и суммировать
MongoDB: Как посчитать отдельные значения в поле
MongoDB: как группировать по нескольким полям