Как подсчитать документы с помощью MongoDB Aggregate Count

Kak Podscitat Dokumenty S Pomos U Mongodb Aggregate Count



Как следует из названия, агрегация $count в MongoDB должна использоваться для подсчета записей полей. Один из популярных способов подсчета записей — использование метода count(). Кроме того, некоторые операторы агрегирования позволяют подсчитывать записи, полученные с предыдущего этапа конвейера агрегирования. Сегодня в этом руководстве мы обсудим агрегирование счетчиков MongoDB на примерах кода.

Пример 01

Чтобы выполнить операцию $count над полями коллекции базы данных в MongoDB, нам необходимо иметь множество записей. Поэтому мы создали коллекцию под названием «Тест» и вставили в нее 12 записей одновременно с помощью функции InsertMany(). Теперь записи этой коллекции «Test» отображаются в оболочке MongoDB с помощью запроса функции find(). Вы можете видеть, что в нем всего три поля: _id, имя и оценка.

тест> db.Test.find({})







Теперь, чтобы применить этап $count к любому полю, мы должны использовать агрегатную функцию MongoDB в инструкции «db». Агрегатная функция состоит из оператора условия, часто использующего оператор $match для определенного поля, за которым следует новое поле, в котором отображается общее количество, полученное из указанного поля условия с помощью оператора $count.



В нашем случае мы использовали оператор $match для поиска совпадающих записей со значением «60» в поле оценки, а оператор $count использовался для подсчета общего количества выбранных записей и отображения их под новое поле под названием «SameScore». В выходных данных этого запроса отображается поле «SameScore» со значением «2», указывающее, что в коллекции «Test» есть две записи со значением «score» «60», равным 2.



db.Test.aggregate([ { $match: { 'счет' : 60 } }, { $count: 'Тот же счет' } ])

Вы также можете использовать агрегацию $count для подсчета полей, отличных от чисел, например поля «имя» коллекции Test. Мы использовали агрегацию совпадений для поиска записи в коллекции, где поле имени имеет значение «Джон». Агрегация счетчиков успешно подсчитала общее количество сопоставленных записей, равное 2.





db.Test.aggregate([ { $match: { 'имя' : 'Джон' } }, { $count: 'То же имя' } ])

Пример 02

Давайте обновим приведенный выше запрос и применим еще одно условие для получения разных записей. На этот раз мы будем применять агрегацию $match поля оценки, чтобы получить общее количество записей, где поле оценки имеет значение меньше 30. Агрегация счетчика будет подсчитывать общее количество записей и добавлять к новой столбец «ОценкаD». На выходе отображается результат «2» как числовое значение для совпадающего значения.

db.Test.aggregate( [ { $match: { оценка: { $lt: 30 } } }, { $count: 'ГрейдД' } ] )

Вы также можете использовать агрегацию $count при применении логических операторов для выполнения более одного условия к записям полей. Таким образом, к полю «Оценка» с помощью оператора $and было применено всего два условия: gte (больше или равно) и lte (меньше и равно). Оба условия должны быть истинными, чтобы получить результат и подсчитать его записи. Общее количество показывает, что имеется пять записей с совпадающими критериями.



db.Test.aggregate( [ { $match: { '$и' : [ { 'счет' : {$gte: 60 }}, { 'счет' : {$lte: 80 }} ] }},

{ $количество: «Класс Б» } ] )

Пример 03

На приведенных выше иллюстрациях мы использовали агрегирование счетчиков, чтобы получить только количество совпадающих записей для определенных значений поля, таких как указанный балл или имя. Метод агрегирования MongoDB позволяет получить количество всех записей, содержащих повторяющиеся значения в коллекции.

Для этого вам нужно использовать агрегацию $group в команде агрегатной функции, как показано ниже. Поле _id использовалось для указания поля «имя», для которого будет работать агрегирование счетчиков. Наряду с этим пользовательское поле NameCount будет использовать агрегацию $count для подсчета нескольких дубликатов в поле «имя».

Результат этого запроса показан ниже. Он содержит значения из поля «имя» и их количество в поле NameCount в соответствии с дублированием значений, например, у Киллиана 4 дубликата и т. д.

db.Test.aggregate([ { $group: { _id: '$имя' , NameCount: { $count: {} }, }, }, ])

Пример 04

Мы также можем использовать агрегирование счетчиков для записей вложенных полей для подсчета определенных значений полей. Чтобы уточнить это, мы создали коллекцию под названием «Учитель» и добавили в нее вложенное поле «sub» и поле типа массива «shift» вместе с другими полями: имя и оплата. Функция find() отобразила все пять записей этой коллекции.

тест> db.Teacher.find({})

Теперь мы применили агрегатную функцию, содержащую оператор сопоставления. Кроме того, оператор $and был применен к подполю «math» поля «sub», которое содержит два разных условия. Затем подсчитывается количество. Вывод показывает, что есть две записи, в которых математические подполя имеют значения больше 10 и меньше 20.

db.Teacher.aggregate( [ { $match: { '$и' : [ { 'подматематика' : {$gte: 10 }}, { 'подматематика' : {$lte: двадцать }} ] }}, { $count: 'Оценка отлично' } ] )

Пример 05

Давайте рассмотрим последний пример, чтобы проиллюстрировать использование функции count() на этот раз вместо использования агрегирования счетчика. Итак, функция count() была применена к полю типа массива коллекции «Учитель», то есть «сдвиг». Используя индексы для поля массива с индексом 2, мы указали критерий соответствия как «ночь». Он выводит «2» как общее количество отсчетов для записи «ночь».

db.Teacher.count({ 'смена.2' : 'ночь' })

Аналогичным образом функцию count() можно применить и к вложенным полям, таким как подполе «phy» поля «sub» из коллекции «Учитель». Мы указали критерии соответствия с помощью оператора «lte», указав значения меньше 14 в подполе «phy». На выходе этой инструкции отображается «2», то есть 4 записи со значением меньше 14.

db.Teacher.count( { 'суб.физ' : { $lte: 14 } })

Заключение

В этом руководстве демонстрируется и подробно описывается использование агрегации $count в MongoDB с несколькими примерами кода. Примеры включают использование агрегирования счетчиков для получения количества счетчиков для определенных записей значений и всех записей полей в коллекциях. Кроме того, он включает использование агрегирования счетчиков в полях массива и встроенных (вложенных) полях. В конце концов, пример функции count() был включен, чтобы сделать различие между использованием агрегирования счетчика и функцией count.