Функции Count() и Remove() в MongoDB с примером

⚡ Умное резюме

Функции Count() и Remove() в MongoDB Метод `count()` сообщает, сколько документов содержит коллекция, и удаляет из неё документы. Метод `count()` возвращает общее количество документов, а метод `remove()` удаляет все документы или только те, которые соответствуют заданному условию.

  • 🔢 Подсчет документов: Метод count() возвращает количество документов в коллекции, соответствующих запросу.
  • 🎯 Подсчет с фильтром: При передаче условия функции count() отображаются только те документы, которые его удовлетворяют.
  • 🇧🇷 Удалить документы: Метод remove() удаляет документы, либо все, либо те, которые соответствуют заданным критериям.
  • ☝️ Удалить один: Опция justOne ограничивает функцию remove() удалением только одного соответствующего документа, а не всех совпадений.
  • 🔄 Современные методы: Функции countDocuments() и deleteMany() в настоящее время заменяют устаревшие функции count() и remove().
  • 🇧🇷 Проверьте вывод: Каждая команда возвращает результат, показывающий количество удаленных документов.

Функции Count() и Remove() в MongoDB

MongoDB Функция подсчета()

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

Пример MongoDB Функция подсчета()

Давайте посмотрим на пример этого.

db.Employee.count()

Code Объяснение:

  • Приведенный выше код выполняет функцию подсчета.

Если команда выполнена успешно, будет показан следующий вывод

Выход:

Пример MongoDB Функция подсчета()

Вывод ясно показывает, что в коллекции имеется 4 документа.

MongoDB Подсчет с использованием условия запроса

Метод `count()` наиболее полезен, когда вы передаете условие запроса, то есть он подсчитывает только соответствующие документы, а не всю коллекцию. Это полезно для создания отчетов, например, о количестве сотрудников в отделе или количестве незавершенных заказов.

В следующем примере подсчитываются сотрудники, у которых Employeeid больше 2:

db.Employee.count({Employeeid:{$gt:2}})

Вот что происходит:

  • Объект запроса {Employeeid:{$gt:2}} действует как фильтр, используя оператор $gt (больше).
  • Функция count() возвращает только количество документов, удовлетворяющих фильтру.
  • Остальная часть коллекции не учитывается в итоговой сумме.

В течении MongoDB В версиях метод countDocuments() рекомендуется для условного подсчета, поскольку он всегда возвращает точный результат. Тот же запрос работает и с ним:

db.Employee.countDocuments({Employeeid:{$gt:2}})

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

Выполнение модификаций

Два других класса операций в MongoDB — это операторы обновления и удаления.

Операции обновления позволяют изменять существующие данные, а операции удаления позволяют удалять данные из коллекции.

Функция Remove() в MongoDB

In MongoDB, db.коллекция.удалить() метод используется для удаления документов из коллекции. Из коллекции можно удалить либо все документы, либо только те, которые соответствуют определенному условию.

Если вы просто введете команду удаления, все документы будут удалены из коллекции.

Пример MongoDB Функция Удалить()

В следующем примере кода показано, как удалить определенный документ из коллекции.

db.Employee.remove({Employeeid:22})

Code Объяснение:

  • Приведенный выше код использует функцию удаления и определяет критерии, которые в данном случае заключаются в удалении документов с идентификатором сотрудника, равным 22.

Если команда выполнена успешно, будет показан следующий вывод

Выход:

Пример MongoDB Функция Удалить()

В результате будет показано, что был удален 1 документ.

Удалить все документы или только один документ

Метод remove() может удалить все соответствующие документы или только один, в зависимости от переданных аргументов. Понимание этой разницы предотвращает случайную потерю данных.

Чтобы удалить все документы из коллекции, передайте пустое условие:

db.Employee.remove({})

Это удалит все документы, но сохранит саму коллекцию. Чтобы удалить только документы, соответствующие условию, передайте объект запроса, как показано ранее с {Employeeid:22}. Если несколько документов соответствуют условию, и вы хотите удалить только первый, добавьте опцию justOne:

db.Employee.remove({EmployeeName:"Smith"}, {justOne:true})

Ключевые отличия:

  • remove({}) удаляет все документы в коллекции.
  • Функция remove({condition}) удаляет все документы, соответствующие условию.
  • Функция remove({condition}, {justOne:true}) удаляет только первый соответствующий документ.

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

Современные альтернативы функциям count() и remove()

Методы count() и remove() являются устаревшими. Более новые методы MongoDB Водители помечают их как устаревшие и предлагают более понятные замены. В таблице ниже приведено соответствие каждого старого метода его современному аналогу:

Устаревший метод Современная замена Цель
count () countDocuments() Возвращает точное количество соответствующих документов.
count () estimatedDocumentCount() Возвращает приблизительное количество всех документов.
Удалить() удалитьОдин() Удаляет первый документ, соответствующий фильтру.
Удалить() удалитьМного() Удаляет все документы, соответствующие фильтру.

Для новых приложений предпочтительнее использовать эти современные методы. Они разделяют подсчет и оценку, а также удаление одного документа от удаления множества, что делает запросы более безопасными и удобными для чтения. Устаревшие функции count() и remove() по-прежнему работают в старых руководствах и скриптах.

Часто задаваемые вопросы (FAQ)

Функция remove() удаляет документы, но сохраняет коллекцию и её индексы. Функция drop() удаляет всю коллекцию, включая все документы и индексы. Используйте remove для удаления данных, а drop — для полного удаления коллекции.

Нет. Метод remove() удаляет только документы внутри коллекции. Коллекция, ее индексы и конфигурация остаются неизменными, поэтому вы можете вставлять новые документы в ту же коллекцию впоследствии, не создавая ее заново.

Устаревшая функция count() может возвращать приблизительное значение в сегментированных кластерах после неудачных операций. Для получения точной суммы используйте countDocuments(), которая выполняет агрегацию; используйте estimatedDocumentCount(), когда скорость важнее точности.

Искусственный интеллект может преобразовать простой запрос в правильный запрос на подсчет или удаление с соответствующим фильтром и предупредить вас, когда команда удаления затронет все документы. Всегда проверяйте результат перед запуском.

Да. Искусственный интеллект может проанализировать команду удаления или удаления множества, отметить отсутствующий фильтр, который очистил бы всю коллекцию, и предложить добавить условие или сделать резервную копию перед выполнением команды.

Подведем итог этой публикации следующим образом: