Module 04 · NoSQL Databases in Cloud云端 NoSQL 数据库
CRUD Operations MongoDB的 CRUD 操作简介
学习目标
观看本视频后,你将能够:
- 使用 Mongo Shell 连接到 MongoDB 数据库
- 执行基本的 CRUD(创建、读取、更新、删除)操作
Mongo Shell 简介
Mongo Shell 是 MongoDB 提供的交互式命令行工具,用于操作数据库。
- 基于 JavaScript 语法,可执行变量定义、逻辑操作等
- 支持数据查询与管理,可进行 CRUD(创建、读取、更新、删除)操作
- 适用于管理 MongoDB 集群,执行数据库管理任务
连接 MongoDB 集群
在 Mongo Shell 中,通过**连接字符串(Connection String)**连接到 MongoDB 集群:
mongo "mongodb+srv://<username>:<password>@<cluster-address>/test"
连接成功后,可查看数据库列表:
show dbs
选择校园管理数据库(Campus Management DB):
use CampusManagementDB
查看当前数据库中的集合(Collections):
show collections
示例输出:
staff
students
1 创建(Create)操作
MongoDB 提供 insertOne 和 insertMany 方法来创建文档。
📌 插入单个学生记录
db.students.insertOne({
firstName: "John",
lastName: "Doe",
email: "john.doe@example.com",
studentId: "S1001"
})
✅ 返回结果(MongoDB 自动生成 _id):
{
"acknowledged": true,
"insertedId": ObjectId("507f191e810c19729de860ea")
}
📌 插入多个学生记录
students_list = [
{ firstName: "Alice", lastName: "Smith", email: "alice.smith@example.com", studentId: "S1002" },
{ firstName: "Bob", lastName: "Brown", email: "bob.brown@example.com", studentId: "S1003" }
]
db.students.insertMany(students_list)
✅ 返回结果(多个 _id):
{
"acknowledged": true,
"insertedIds": {
"0": ObjectId("507f191e810c19729de860ea"),
"1": ObjectId("507f191e810c19729de860eb")
}
}
2 读取(Read)操作
MongoDB 提供 findOne 和 find 方法来查询数据。
📌 查询单个文档(不带筛选条件)
db.students.findOne()
✅ 返回结果(默认返回集合中的第一个文档):
{
"_id": ObjectId("507f191e810c19729de860ea"),
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"studentId": "S1001"
}
📌 按邮箱查询单个学生信息
db.students.findOne({ email: "john.doe@example.com" })
📌 查询所有姓 Doe 的学生
db.students.find({ lastName: "Doe" })
📌 统计姓 Doe 的学生数量
db.students.countDocuments({ lastName: "Doe" })
✅ 返回结果(示例):
2
3 更新(Update)操作
MongoDB 提供 replaceOne 和 updateOne / updateMany 方法来更新文档。
📌 替换整个文档(Replace)
db.students.replaceOne(
{ lastName: "Doe" }, // 过滤条件
{
firstName: "John",
lastName: "Doe",
email: "john.doe@campus.edu", // 修改了邮箱
studentId: "S1001",
status: "Online" // 新增字段
}
)
✅ 返回结果:
{
"acknowledged": true,
"matchedCount": 1,
"modifiedCount": 1
}
📌 使用 $set 进行局部更新(避免整个文档替换)
db.students.updateOne(
{ lastName: "Doe" },
{ $set: { email: "john.doe@campus.edu", status: "Online" } }
)
📌 批量更新所有学生状态(无筛选条件)
db.students.updateMany({}, { $set: { status: "Online" } })
✅ 返回结果:
{
"acknowledged": true,
"matchedCount": 3,
"modifiedCount": 3
}
4 删除(Delete)操作
MongoDB 提供 deleteOne 和 deleteMany 方法来删除数据。
📌 删除单个学生
db.students.deleteOne({ email: "john.doe@example.com" })
✅ 返回结果:
{
"acknowledged": true,
"deletedCount": 1
}
📌 删除所有姓 Doe 的学生
db.students.deleteMany({ lastName: "Doe" })
✅ 返回结果:
{
"acknowledged": true,
"deletedCount": 2
}
总结
| 操作 | 方法 | 说明 |
|---|---|---|
| 创建(Create) | insertOne(), insertMany() |
插入单个/多个文档 |
| 读取(Read) | findOne(), find(), countDocuments() |
查询单个/多个文档,统计数量 |
| 更新(Update) | replaceOne(), updateOne(), updateMany() |
替换整个文档 / 部分更新字段 |
| 删除(Delete) | deleteOne(), deleteMany() |
删除单个/多个文档 |
📌 MongoDB CRUD 操作要点:
- Mongo Shell 是交互式命令行工具,用于管理数据库
- 连接 MongoDB 需要提供连接字符串
- CRUD 操作基于 JavaScript 语法,提供灵活的数据管理
- 使用
$set进行局部更新,避免不必要的数据传输 - 批量操作(updateMany, deleteMany)可高效处理大量数据
🚀 MongoDB 的 CRUD 操作强大且灵活,适用于各种数据管理需求!