MongoDB: как группировать и считать


Вы можете использовать следующий синтаксис для группировки и подсчета в MongoDB:

db.collection.aggregate([
 { $group : { _id :" $field_name", count :{ $sum :1}}}
])

Обратите внимание, что field_name — это поле, по которому вы хотите выполнить группировку.

В следующих примерах показано, как использовать этот синтаксис с набором команд со следующими документами:

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: как сгруппировать по нескольким полям

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.