简介
在本实验中,你将学习如何在 MongoDB 数据库中有效地删除数据。你将从删除单个文档开始,然后探索执行批量删除和根据特定条件删除数据的技术。最后,你将学习如何清空整个集合并验证删除结果。这些技能对于管理你的 MongoDB 数据库和维护数据完整性至关重要。
本实验涵盖以下步骤:删除单个文档、执行批量删除、按条件删除、清空集合数据以及验证删除结果。通过本实验,你将全面了解如何使用各种方法在 MongoDB 中删除数据,以满足你的需求。
在本实验中,你将学习如何在 MongoDB 数据库中有效地删除数据。你将从删除单个文档开始,然后探索执行批量删除和根据特定条件删除数据的技术。最后,你将学习如何清空整个集合并验证删除结果。这些技能对于管理你的 MongoDB 数据库和维护数据完整性至关重要。
本实验涵盖以下步骤:删除单个文档、执行批量删除、按条件删除、清空集合数据以及验证删除结果。通过本实验,你将全面了解如何使用各种方法在 MongoDB 中删除数据,以满足你的需求。
在这一步中,我们将学习如何使用 deleteOne()
方法在 MongoDB 中删除单个文档。首先,启动 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 的两个文档。
在这一步中,我们将探索如何使用 MongoDB 中的 deleteMany()
方法一次性删除多个文档。
让我们创建一些示例数据:
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()
预期输出将仅显示集合中状态为 "active" 的用户。
在这一步中,我们将学习如何在 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("...")
}
}
db.employees.deleteMany({ age: { $gt: 40 } })
预期输出:
{ acknowledged: true, deletedCount: 1 }
解释:
$gt
操作符表示“大于”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 }
])
db.employees.deleteMany({ salary: { $lt: 45000 } })
const remainingEmployees = db.employees.countDocuments()
print("Remaining employees:", remainingEmployees)
预期输出:
Remaining employees: 5
find()
验证删除:const lowSalaryEmployees = db.employees.find({ salary: { $lt: 45000 } }).count()
print("Low salary employees after deletion:", lowSalaryEmployees)
预期输出:
Low salary employees after deletion: 0
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 中删除数据的不同方法,从删除单个文档到根据特定条件执行批量删除。这些技能对于有效管理数据库和维护数据完整性至关重要。