Функції 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 Драйвери позначають їх як застарілі та пропонують чіткіші заміни. У таблиці нижче кожен старий метод зіставлено з його сучасним еквівалентом:

Застарілий метод Сучасна заміна Мета
рахувати() підрахунокДокументів() Повертає точну кількість відповідних документів
рахувати() оцінена кількість документів() Повертає швидку, приблизну кількість усіх документів
видалити () deleteOne() Видаляє перший документ, що відповідає фільтру
видалити () видалитиБагато() Видаляє всі документи, що відповідають фільтру

Для нових застосувань віддавайте перевагу цим сучасним методам. Вони розділяють підрахунок від оцінки та видалення одного документа від видалення багатьох, що робить запити безпечнішими та легшими для читання. Застарілі count() та remove() все ще працюють для старіших навчальних посібників та скриптів.

Поширені запитання

remove() видаляє документи, але зберігає колекцію та її індекси. drop() видаляє всю колекцію, включаючи кожен документ та індекс. Використовуйте remove для даних та drop, щоб повністю видалити колекцію.

Ні. remove() видаляє лише документи всередині колекції. Колекція, її індекси та конфігурація залишаються на місці, тому ви можете додавати нові документи до тієї ж колекції пізніше, не створюючи її повторно.

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

Штучний інтелект може перетворити простий запит на правильний запит на підрахунок або видалення за допомогою правильного фільтра та попередити вас, коли команда видалення вплине на кожен документ. Завжди перевіряйте її перед запуском.

Так. Штучний інтелект може переглянути команду remove або deleteMany, позначити відсутній фільтр, який очистить усю колекцію, та запропонувати додати умову або створити резервну копію перед її запуском.

Підсумуйте цей пост за допомогою: