Coursera 笔记

Module 04 · NoSQL Databases in Cloud云端 NoSQL 数据库

CRUD Operations MongoDB的 CRUD 操作简介

Coursera ↗

学习目标

观看本视频后,你将能够:

  • 使用 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 操作强大且灵活,适用于各种数据管理需求!