Как узнать количество документов в коллекции mongodb
Перейти к содержимому

Как узнать количество документов в коллекции mongodb

  • автор:

Количество документов в коллекции MongoDB

Иногда нам нужно знать какое количество документов содержит коллекция. В этом нам поможет метод count . Давайте с его помощью найдем количество документов в коллекции с юзерами:

let res = await coll.count(); console.log(res);

А теперь узнаем количество юзеров, у которых возраст равен 26 лет:

let res = await coll.count(); console.log(res);

Узнайте, сколько документов в коллекции с продуктами.

Узнайте, сколько продуктов имеет цену 500 .

Как запросить количество документов в коллекции MongoDB?

pomeo

Sergey Ovechkin: .count() принимает точно такие же запросы, как и .find(), если что.

pomeo

Константин Китманов: да только пока пляшешь в консоли с db.collection.find(), чтобы убедиться, что именно то ты видишь. Перепечатывать find на count смысла нет, проще его сзади добавить

FaionWeb

FaionWeb @FaionWeb Автор вопроса

Как узнать количество документов в коллекции mongodb

С помощью функции countDocuments() можно получить общее количество документов в коллекции:

db.users.countDocuments()

Если нам надо узнать не совокупное количество документов в коллекции, а только количество документов в конкретной выборке, то можно применять функцию count() . Например, подсчитаем количество документов, у которых name=Tom:

db.users.find().count()

Более того мы можем создавать цепочки функций, чтобы конкретизировать условия подсчета:

db.users.find().skip(2).count(true)

Здесь надо отметить, что по умолчанию функция count не используется с функциями limit и skip. Чтобы их использовать, как в примере выше, в функцию count надо передать булевое значение true

Функция distinct

В коллекции могут быть документы, которые содержат одинаковые значения для одного или нескольких полей. Например, в нескольких документах определено name: «Tom» . И нам надо найти только уникальные различающиеся значения для одного из полей документа. Для этого мы можем воспользоваться функцией distinct . Например, пусть в базу данных добавлены следующие документы:

db.users.insertOne() db.users.insertOne() db.users.insertOne() db.users.insertOne()

Выведем все уникальные значения по полю «name»:

test> db.users.distinct("name") [ 'Bob', 'Sam', 'Tom' ] test>

Функции min и max

Функции min и max устанавливает для определенного поля минимальное значение для попадания в выборку. При этом данные функции могут использовать только те поля, для которых установлены индексы. Например, возьмем выше опеределенную коллекцию db.users и определим в ней индекс для поля age:

db.users.createIndex()

При выполнении функции также надо использовать функцию hint() , в которую передается индекс. Например, выберем все документы, в которых поле age больше 30:

test> db.users.find().min().hint() [ < _id: ObjectId("62e3d63a79a0a7792a9de210"), name: 'Tom', age: 38, languages: [ 'english', 'spanish' ] >, < _id: ObjectId("62e3d63a79a0a7792a9de211"), name: 'Bob', age: 41, languages: [ 'english', 'french' ] >] test>

Аналогичным образом работает функция max() , которая устанавливает максимальное значение. Например, выберем документы, где age меньше 30:

test> db.users.find().max().hint() [ < _id: ObjectId("62e3d64079a0a7792a9de213"), name: 'Tom', age: 22, languages: [ 'english', 'german' ] >, < _id: ObjectId("62e3d63a79a0a7792a9de212"), name: 'Sam', age: 28, languages: [ 'english' ] >] test>

Как узнать общее кол-во созданных документов в коллекции mongodb за всё время?

Понятно что можно создать отдельное поле для этих целей. Но возможно ли добиться этого стандартным функционалом mongodb?

Отслеживать
Anton Manevskiy
задан 15 июн 2016 в 13:03
Anton Manevskiy Anton Manevskiy
448 2 2 серебряных знака 9 9 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Нужно использовать метод count() если вы хотите знать кол-во документы в коллекции

db.collection.count() 

Но нет никакого способа знать кол-во созданных за всё время жизни коллекции, в том числе те, которые были удалены.

Отслеживать
ответ дан 15 июн 2016 в 13:06
581 5 5 серебряных знаков 22 22 бронзовых знака

я в java посчитал так:

collection.countDocuments(); 

Отслеживать
ответ дан 18 янв 2022 в 11:43
19 8 8 бронзовых знаков

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *