CRUD(Create、Read、Update、Delete)是數據庫操作的基礎。MongoDB 以文檔為核心,提供直觀的 Shell 命令。本文涵蓋庫/集合管理、文檔增刪改查、更新操作符等核心技能。
// 切換/創建數據庫
use mydb
// 顯式創建集合
db.createCollection("users")
// 隱式創建:首次插入文檔自動建立集合
db.users.insert({name: "Alice"})
// 刪除集合
db.users.drop()
// 刪除當前數據庫
db.dropDatabase()
// 單條插入,自動生成 _id
db.users.insert({name: "Bob", age: 25})
// 指定 _id
db.users.insert({_id: 1001, name: "Charlie"})
// 批量插入
db.users.insert([
{name: "Dave", age: 30},
{name: "Eve", age: 28}
])
// 查詢所有
db.users.find()
// 條件查詢
db.users.find({name: "Bob"})
// 投影:只返回 name 字段(_id 默認返回,需顯式排除)
db.users.find({}, {name: 1, _id: 0})
// 刪除所有匹配文檔
db.users.remove({name: "Bob"})
// 只刪除第一條匹配文檔
db.users.remove({name: "Bob"}, {justOne: true})
// 清空集合
db.users.remove({})
db.collection.update(
, // 查詢條件
, // 更新內容或操作符
{upsert: true/false, multi: true/false}
)
upsert: true:不存在則插入multi: true:更新所有匹配文檔(默認只更新第一條)// 會完全替換文檔,原有其他字段丟失
db.users.update({name: "Bob"}, {name: "Bob New", age: 26})
| 操作符 | 作用 | 示例 |
|---|---|---|
$set | 設置/更新字段值 | db.users.update({name:"Bob"}, {$set:{age:27}}) |
$inc | 數值增減 | db.users.update({name:"Bob"}, {$inc:{age:1}}) |
$rename | 重命名字段 | db.users.update({name:"Bob"}, {$rename:{"name":"username"}}) |
$unset | 刪除字段 | db.users.update({name:"Bob"}, {$unset:{age:1}}) |
$setOnInsert | upsert 時設置初始值 | db.users.update({_id:1}, {$setOnInsert:{created:new Date()}}, {upsert:true}) |
// 批量給所有年齡 < 30 的用戶加 1 歲,不存在則插入
db.users.update(
{age: {$lt: 30}},
{$inc: {age: 1}},
{multi: true, upsert: false}
)
// 將 "status" 字段重命名為 "state",並設置默認值
db.users.update(
{},
{$rename: {"status": "state"}, $set: {state: "active"}},
{multi: true}
)