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

⚡ Умно обобщение

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

  • 🔢 Брой документи: Методът count() връща броя на документите в колекция или съответстващи на заявка.
  • 🎯 Брой с филтър: Предаването на условие към count() отчита само документите, които го удовлетворяват.
  • 🗑️ Премахване на документи: Методът remove() изтрива документи, или всички, или тези, които отговарят на обект с критерии.
  • ☝️ Премахнете едно: Опцията justOne ограничава remove() да изтрива един съвпадащ документ вместо всички съвпадения.
  • 🔄 Съвременни методи: countDocuments() и deleteMany() са текущите заместители на остарелите count() и remove().
  • 🖨️ Проверка на изхода: Всяка команда връща резултат, показващ броя или броя на премахнатите документи.

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

MongoDB Функция Count().

Концепцията за агрегиране е да се извърши изчисление на резултатите, които се връщат в заявка. Да предположим например, че искате да знаете какъв е броят на документите в колекция според изпратената заявка, тогава MongoDB предоставя функцията count().

Пример за MongoDB Функция Count().

Нека да разгледаме един пример за това.

db.Employee.count()

Code Обяснение:

  • Горният код изпълнява функцията за броене.

Ако командата е изпълнена успешно, ще се покаже следният изход

Изход:

Пример за MongoDB Функция Count().

Резултатът ясно показва, че в колекцията има 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.collection.remove() метод се използва за премахване на документи от колекция. Или всички документи могат да бъдат премахнати от колекция, или само тези, които отговарят на конкретно условие.

Ако просто подадете командата за премахване, всички документи ще бъдат премахнати от колекцията.

Пример за MongoDB Функция Remove().

Следният пример на код демонстрира как да премахнете конкретен документ от колекцията.

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

Code Обяснение:

  • Горният код използва функцията за премахване и указва критериите, които в този случай са за премахване на документите, които имат идентификатор на служител като 22.

Ако командата е изпълнена успешно, ще се покаже следният изход

Изход:

Пример за MongoDB Функция Remove().

Резултатът ще покаже, че е премахнат 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 Шофьорите ги маркират като остарели и предоставят по-ясни заместители. Таблицата по-долу съпоставя всеки стар метод със съвременния му еквивалент:

Наследен метод Модерна подмяна Цел
броя() бройДокументи() Връща точен брой съответстващи документи
броя() estimatedDocumentCount() Връща бърз, приблизителен брой на всички документи
Премахване() deleteOne() Изтрива първия документ, който съответства на филтъра
Премахване() изтриванеМного() Изтрива всеки документ, който отговаря на филтъра

За нови приложения, предпочитайте тези съвременни методи. Те разделят броенето от оценяването и изтриването на един документ от изтриването на много, което прави заявките по-безопасни и по-лесни за четене. Старите count() и remove() все още работят за по-стари уроци и скриптове.

Въпроси и Отговори

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

Не. remove() изтрива само документи в колекцията. Колекцията, нейните индекси и конфигурация остават на мястото си, така че можете да вмъквате нови документи в същата колекция след това, без да я пресъздавате.

Наследената функция count() може да върне приблизителна стойност за раздробени клъстери след неуспешни операции. За точен общ резултат използвайте countDocuments(), която изпълнява агрегация; използвайте estimatedDocumentCount(), когато скоростта е по-важна от прецизността.

Изкуственият интелект може да преведе обикновена заявка в правилната заявка за брой или изтриване с правилния филтър и да ви предупреди, когато команда за премахване би засегнала всеки документ. Винаги я проверявайте преди изпълнение.

Да. Изкуственият интелект може да прегледа командата remove или deleteMany, да маркира липсващ филтър, който би изчистил цялата колекция, и да предложи добавяне на условие или създаване на резервно копие преди изпълнението ѝ.

Обобщете тази публикация с: