掌握MongoDB CRUD操作:新手必學的4種基礎操作

前提準備:MongoDB基礎入門

在開始學習CRUD操作前,我們先簡單瞭解MongoDB的特點:它是一款文檔型數據庫,數據以JSON格式(BSON)存儲,沒有固定的表結構,每個數據單元稱爲“文檔”,存放在“集合”(Collection)中。

操作前準備
1. 打開MongoDB服務(本地默認無需額外配置),在命令行輸入 mongo 進入Mongo Shell。
2. 切換到目標數據庫(如 use mydb,若不存在則自動創建)。
3. 選擇要操作的集合(如 db.users,若不存在則插入數據時自動創建)。

1. Create(創建):向集合插入數據

創建操作的核心是向集合中添加新文檔,常用方法:

1.1 插入單條數據:insertOne()

語法:db.集合名.insertOne(文檔對象)

示例:向 users 集合插入一個用戶信息:

// 插入單條文檔
db.users.insertOne({
  name: "張三",
  age: 20,
  email: "zhangsan@example.com"
})

返回結果

{
  "acknowledged": true,  // 操作確認
  "insertedId": "650a0b12c3d4e5f6a7b8c9d0",  // 自動生成的唯一ID(_id)
  "insertedCount": 1
}

1.2 插入多條數據:insertMany()

語法:db.集合名.insertMany([文檔1, 文檔2, ...])

示例:插入兩條用戶數據:

db.users.insertMany([
  { name: "李四", age: 22, email: "lisi@example.com" },
  { name: "王五", age: 21, email: "wangwu@example.com" }
])

返回結果

{
  "acknowledged": true,
  "insertedIds": [
    "650a0b12c3d4e5f6a7b8c9d1",
    "650a0b12c3d4e5f6a7b8c9d2"
  ],
  "insertedCount": 2
}

2. Read(讀取):查詢集合數據

讀取操作用於獲取集合中的數據,核心是 find() 方法,支持條件過濾、字段篩選、排序等。

2.1 查詢所有文檔:find()

語法:db.集合名.find(查詢條件, {字段投影})

  • 查詢條件:空對象 {} 表示查詢所有文檔。
  • 字段投影{字段名: 1} 表示返回該字段,{字段名: 0} 表示排除該字段(_id 默認返回,需顯式設爲0排除)。

示例:查詢 users 集合中所有用戶信息,並只返回 nameage

// 1. 查詢所有文檔,返回所有字段
db.users.find()

// 2. 只返回name和age(排除_id)
db.users.find({}, { name: 1, age: 1, _id: 0 })

2.2 帶條件查詢:

通過條件過濾文檔,常用操作符:等於(=)大於(>)小於(<)不等於(!=)包含(in)等。

示例:查詢年齡爲20的用戶:

db.users.find({ age: 20 })  // 條件爲age=20

示例:查詢年齡大於21的用戶:

db.users.find({ age: { $gt: 21 } })  // $gt 表示大於

2.3 排序、限制數量:

  • 排序sort({字段: 1})(1=升序,-1=降序)。
  • 限制數量limit(n)(只返回前n條)。

示例:查詢年齡小於25的用戶,按年齡升序排列,只返回前2條:

db.users.find({ age: { $lt: 25 } })
  .sort({ age: 1 })  // 升序排序
  .limit(2)          // 限制返回2條

3. Update(更新):修改集合數據

更新操作需明確修改規則(條件)和修改方式(操作符),常用方法:

3.1 更新單條數據:updateOne()

語法:db.集合名.updateOne(查詢條件, {修改操作})

常用修改操作符
- $set:覆蓋字段(如修改name、age)。
- $inc:自增字段(如age+1)。

示例:將姓名爲“張三”的用戶年齡+1:

db.users.updateOne(
  { name: "張三" },  // 查詢條件:name=張三
  { $inc: { age: 1 } }  // 修改操作:age自增1
)

示例:將姓名爲“李四”的用戶姓名改爲“李華”:

db.users.updateOne(
  { name: "李四" },
  { $set: { name: "李華" } }  // 修改name字段
)

3.2 更新多條數據:updateMany()

語法:db.集合名.updateMany(查詢條件, {修改操作})

示例:將所有年齡小於22的用戶年齡設爲22:

db.users.updateMany(
  { age: { $lt: 22 } },  // 條件:age<22
  { $set: { age: 22 } }  // 覆蓋age字段
)

4. Delete(刪除):移除集合數據

刪除操作需謹慎,避免誤刪,常用方法:

4.1 刪除單條數據:deleteOne()

語法:db.集合名.deleteOne(查詢條件)

示例:刪除姓名爲“王五”的用戶:

db.users.deleteOne({ name: "王五" })

4.2 刪除多條數據:deleteMany()

語法:db.集合名.deleteMany(查詢條件)

示例:刪除所有年齡大於22的用戶:

db.users.deleteMany({ age: { $gt: 22 } })

4.3 清空集合(危險操作!):

刪除所有文檔(需確認集合中無重要數據):

db.users.deleteMany({})  // 空條件表示刪除所有文檔

總結

MongoDB的CRUD操作是數據管理的基礎,核心是:
- Create:用 insertOne/insertMany 插入文檔。
- Read:用 find 帶條件、投影、排序查詢數據。
- Update:用 updateOne/updateMany 配合 $set/$inc 等操作符修改。
- Delete:用 deleteOne/deleteMany 帶條件刪除,避免誤刪。

練習建議:新建一個 students 集合,嘗試完成“插入3條學生數據→查詢年齡18歲以上的學生→將所有18歲學生年齡+1→刪除所有女生數據”的完整流程,熟悉各操作細節。

通過基礎操作,你已能獨立完成MongoDB數據的增刪改查,後續可學習索引、聚合管道等進階功能~

小夜