Удаление документов MongoDB

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

Распространённые методы удаления документов включают deleteOne(), deleteMany() и findOneAndDelete().

Сценарии использования:

  • Очистка данных: Удаление старых или недействительных данных, которые больше не нужны.
  • Исправление данных: Удаление ошибочных или дублирующихся документов во время исправления данных.
  • Автоматизированные задачи: Удаление документов на основе определённых условий в автоматизированных скриптах или задачах.

1、deleteOne()

Метод deleteOne() используется для удаления одного документа, соответствующего фильтру.

Синтаксис:

db.collection.deleteOne(filter, options)
  • filter: Критерии запроса, используемые для поиска документа, который нужно удалить.
  • options: (Необязательно) Необязательный объект параметров.

Пример

db.myCollection.deleteOne({ name: "Alice" });

Возвращённый результат:

{
    "acknowledged": true,
    "deletedCount": 1
}

2、deleteMany()

Метод deleteMany() используется для удаления всех документов, соответствующих фильтру.

Синтаксис:

db.collection.deleteMany(filter, options)
  • filter: Критерии запроса, используемые для поиска документов, которые нужно удалить.
  • options: (Необязательно) Необязательный объект параметров.

Пример

db.myCollection.deleteMany({ status: "inactive" });

Возвращённый результат:

{
    "acknowledged": true,
    "deletedCount": 1
}

3、findOneAndDelete()

Метод findOneAndDelete() используется для поиска и удаления одного документа и может опционально возвращать удалённый документ.

Синтаксис:

db.collection.findOneAndDelete(filter, options)
  • filter: Критерии запроса, используемые для поиска документа, который нужно удалить.
  • options: Необязательный объект параметров, напримерprojection、sortи т. д.

Пример

db.myCollection.findOneAndDelete(
    { name: "Charlie" },
    { projection: { name: 1, age: 1 } }
);

findOneAndDelete возвращает удаленный документ; если соответствующий документ не найден, возвращает null.

Параметры операций удаления

Параметр options этих методов удаления обычно может включать следующие параметры:

  • writeConcern: Определяет уровень подтверждения для операции записи.
  • collation: Задает правила сопоставления, используемые при сравнении строк.
  • projection(Применимо только кfindOneAndDelete): Определяет поля для возврата.
  • sort(Применимо только кfindOneAndDelete): Определяет порядок сортировки для определения документа, который нужно удалить.

Пример

Удаление одного документа:

db.myCollection.deleteOne({ name: "Alice" });

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

db.myCollection.deleteMany({ status: "inactive" });

Поиск и удаление одного документа:

db.myCollection.findOneAndDelete(
    { name: "Charlie" },
    { projection: { name: 1, age: 1 } }
);
Другие расширения