前提準備: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 集合中所有用戶信息,並只返回 name 和 age:
// 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數據的增刪改查,後續可學習索引、聚合管道等進階功能~