Удаление данных в MongoDB

MongoDBMongoDBBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 97.44%.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/AggregationOperationsGroup(["Aggregation Operations"]) mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb/BasicOperationsGroup -.-> mongodb/start_mongodb_shell("Start MongoDB Shell") mongodb/BasicOperationsGroup -.-> mongodb/delete_document("Delete Document") mongodb/BasicOperationsGroup -.-> mongodb/bulk_delete_documents("Bulk Delete Documents") mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") mongodb/QueryOperationsGroup -.-> mongodb/query_with_conditions("Query with Conditions") mongodb/AggregationOperationsGroup -.-> mongodb/aggregate_group_totals("Aggregate Group Totals") subgraph Lab Skills mongodb/start_mongodb_shell -.-> lab-420822{{"Удаление данных в MongoDB"}} mongodb/delete_document -.-> lab-420822{{"Удаление данных в MongoDB"}} mongodb/bulk_delete_documents -.-> lab-420822{{"Удаление данных в MongoDB"}} mongodb/find_documents -.-> lab-420822{{"Удаление данных в MongoDB"}} mongodb/query_with_conditions -.-> lab-420822{{"Удаление данных в MongoDB"}} mongodb/aggregate_group_totals -.-> lab-420822{{"Удаление данных в MongoDB"}} end

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

В этом шаге мы научимся удалять отдельный документ в MongoDB с использованием метода deleteOne(). Сначала запустите MongoDB shell:

mongosh

Создадим примерную коллекцию с несколькими документами для практики удаления:

use mylab_database
db.users.insertMany([
    { name: "John Doe", age: 30, email: "[email protected]" },
    { name: "Jane Smith", age: 25, email: "[email protected]" },
    { name: "Bob Johnson", age: 35, email: "[email protected]" }
])

Пример вывода:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("...")
  }
}

Для удаления отдельного документа мы будем использовать метод deleteOne(). Этот метод позволяет удалить конкретный документ на основе уникального идентификатора или конкретного условия:

db.users.deleteOne({ name: "Jane Smith" })

Ожидаемый вывод:

{ acknowledged: true, deletedCount: 1 }

Разберём команду:

  • deleteOne() удаляет только первый документ, соответствующий указанным критериям
  • Если несколько документов соответствуют критериям, удаляется только первый
  • Метод возвращает объект с acknowledged (успех операции) и deletedCount (количеством удаленных документов)

Проверьте удаление, найдя всех пользователей:

db.users.find()

Ожидаемый вывод будет показывать только два документа для John Doe и Bob Johnson.

Выполнить массовое удаление

В этом шаге мы изучим, как удалить несколько документов сразу с использованием метода deleteMany() в MongoDB.

Создадим некоторые примерные данные:

use mylab_database
db.users.insertMany([
    { name: "Alice Wilson", age: 28, status: "inactive" },
    { name: "Charlie Brown", age: 40, status: "inactive" },
    { name: "David Lee", age: 35, status: "active" },
    { name: "Eve Taylor", age: 45, status: "inactive" }
])

Пример вывода:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("..."),
    '3': ObjectId("...")
  }
}

Теперь используйте deleteMany() для удаления всех пользователей со статусом "inactive":

db.users.deleteMany({ status: "inactive" })

Ожидаемый вывод:

{ acknowledged: true, deletedCount: 3 }

Основные моменты о deleteMany():

  • Удаляет все документы, соответствующие указанным критериям
  • Возвращает общее количество удаленных документов
  • Предоставляет эффективный способ удалить несколько записей одновременно

Проверьте оставшиеся документы:

db.users.find()

Ожидаемый вывод будет показывать только активных пользователей в коллекции.

Удаление по условиям

В этом шаге мы научимся удалять документы с использованием сложных условий в MongoDB.

Создадим примерную коллекцию:

use mylab_database
db.employees.insertMany([
    { name: "John Doe", age: 25, department: "Sales", salary: 50000 },
    { name: "Jane Smith", age: 35, department: "Marketing", salary: 60000 },
    { name: "Bob Johnson", age: 45, department: "Sales", salary: 55000 },
    { name: "Alice Brown", age: 30, department: "HR", salary: 52000 }
])

Пример вывода:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("..."),
    '3': ObjectId("...")
  }
}
  1. Удалите сотрудников старше 40 лет:
db.employees.deleteMany({ age: { $gt: 40 } })

Ожидаемый вывод:

{ acknowledged: true, deletedCount: 1 }

Пояснение:

  • Оператор $gt означает "больше чем"
  • Эта команда удаляет документы, где возраст больше 40
  1. Удалите сотрудников из отдела Sales с зарплатой менее 55000:
db.employees.deleteMany({
    department: "Sales",
    salary: { $lt: 55000 }
})

Ожидаемый вывод:

{ acknowledged: true, deletedCount: 1 }

Пояснение:

  • $lt означает "меньше чем"
  • Удаляет документы, соответствующие и условию отдела, и условию зарплаты

Проверьте оставшиеся документы:

db.employees.find()

Очистить данные коллекции

В этом шаге мы изучим методы для полной очистки данных из коллекции MongoDB.

Создадим примерную коллекцию:

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electronics" },
  { name: "Smartphone", price: 500, category: "Electronics" },
  { name: "Headphones", price: 100, category: "Electronics" }
])

Метод 1: Удалить все документы с использованием deleteMany():

db.products.deleteMany({})

Ожидаемый вывод:

{ acknowledged: true, deletedCount: 3 }

Пояснение:

  • Удаляет все документы, не удаляя структуру коллекции
  • Пустой фильтр {} нацелился на все документы

Проверьте, что коллекция пуста:

db.products.find()

Метод 2: Удалить всю коллекцию с использованием drop():

Пересоздадим примерные данные:

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electronics" },
  { name: "Smartphone", price: 500, category: "Electronics" },
  { name: "Headphones", price: 100, category: "Electronics" }
])

Удалите коллекцию:

db.products.drop()

Ожидаемый вывод:

true

Пояснение:

  • Полностью удаляет коллекцию и ее метаданные
  • Перманентное удаление всей коллекции

Попытайтесь найти коллекцию:

db.products.find()

Это вызовет ошибку, указывающую на то, что коллекция больше не существует.

Проверить результаты удаления

В этом последнем шаге мы изучим методы для проверки операций удаления в MongoDB.

Создадим примерную коллекцию:

db.employees.insertMany([
    { name: "Alice", department: "HR", salary: 50000 },
    { name: "Bob", department: "Sales", salary: 45000 },
    { name: "Charlie", department: "Marketing", salary: 55000 },
    { name: "David", department: "Sales", salary: 40000 }
])
  1. Удалите сотрудников с низкой зарплатой и проверьте:
db.employees.deleteMany({ salary: { $lt: 45000 } })
const remainingEmployees = db.employees.countDocuments()
print("Remaining employees:", remainingEmployees)

Ожидаемый вывод:

Remaining employees: 5
  1. Проверьте удаление с использованием find():
const lowSalaryEmployees = db.employees.find({ salary: { $lt: 45000 } }).count()
print("Low salary employees after deletion:", lowSalaryEmployees)

Ожидаемый вывод:

Low salary employees after deletion: 0
  1. Проверьте количество сотрудников в конкретном отделе:
const salesEmployees = db.employees.countDocuments({ department: "Sales" })
print("Sales department employees:", salesEmployees)

Ожидаемый вывод:

Sales department employees: 1

Комплексная проверка:

print("Total employees:", db.employees.countDocuments())
print("Employees by department:")
db.employees.aggregate([
    { $group: { _id: "$department", count: { $sum: 1 } } }
])

Ожидаемый вывод покажет общее количество сотрудников и их распределение по отделам.

[
  { _id: 'Marketing', count: 2 },
  { _id: 'Sales', count: 1 },
  { _id: 'HR', count: 2 }
]

Резюме

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

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

OSZAR »