首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

MongoDB CRUD 操作完整指南:集合與文件的建立、更新、刪除

     編輯:DB2 教學

前言

MongoDB 是以文件為導向的 NoSQL 資料庫,資料以 BSON (Binary JSON) 格式儲存。本文系統整理 MongoDB Shell 中集合與文件的核心 CRUD 操作,包含 createCollection、drop、insert、update、save、remove 等指令,並說明常用參數與實戰範例。

一、集合管理

1. 建立集合 createCollection()

db.createCollection(name, options)
  • name:集合名稱 (字串)。
  • options:選擇性文件,可設定 capped、size、max、autoIndexId 等。

參數說明

參數類型說明
cappedBooleantrue 為固定大小集合,資料滿時自動覆蓋最舊文件。需同時指定 size。
sizeNumbercapped 為 true 時必填,單位 bytes。
maxNumber最大文件數量。
autoIndexIdBoolean預設 false,true 時在 _id 自動建立索引。

範例

> db.createCollection("jingdong")                    // 無參數
{ "ok" : 1 }
> db.createCollection("jingdong", { capped: true, autoIndexId: true, size: 6142800, max: 10000 })
{ "ok" : 1 }
提示: 實務上常直接透過 insert 隱性建立集合,無須顯式呼叫 createCollection。

2. 刪除集合 drop()

db.COLLECTION.drop()

範例

> use JD
switched to db JD
> show collections
jingdong jingdong1 system.indexes
> db.jingdong.drop()
true
> show collections
jingdong1 system.indexes

二、文件新增 insert()

db.COLLECTION_NAME.insert(document)

範例

> userdoc1 = { "user_id": 1, "name": "cloud", "state": "active", "actor": "user", "e-mail": "test@qq.com", "VM_num": 2, "time": [{ "date": "2014-08-12", "hour": "10:53 PM" }] }
> userdoc2 = { "user_id": 2, "name": "testadmin", "state": "active", "actor": "admin", "e-mail": "test@qq.com", "VM_num": 2, "time": [{ "date": "2014-08-11", "hour": "06:34 AM" }] }
> doc = { "name": "peter", "position": "teacher" }
> use JD
> db.jingdong.insert(userdoc1)
WriteResult({ "nInserted" : 1 })
> db.jingdong.insert(userdoc2)
WriteResult({ "nInserted" : 1 })
> db.jingdong.insert(doc)
WriteResult({ "nInserted" : 1 })

三、文件更新 update()

db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA, options)

1. 基本更新 (單一文件)

> db.jingdong.update(
    { "user_id": "02", "e-mail": "test@qq.com" },
    { $set: { "e-mail": "group@qq.com" } }
)
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
  • 第一個物件:查詢條件。
  • 第二個物件:更新運算子 (如 $set、$inc、$push 等)。
  • 預設只更新第一筆符合條件的文件。

2. 多文件更新 multi: true

> db.shiyanlou.update(
    { "e-mail": "test@qq.com" },
    { $set: { "e-mail": "group@qq.com" } },
    { multi: true }
)

3. 替換整份文件 save()

db.COLLECTION_NAME.save({ _id: ObjectId(), NEW_DATA })

範例

> db.shiyanlou.save({ "_id": ObjectId("53ea174ccb4c62646d9544f4"), "name": "Bob", "position": "teacher" })
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
  • 若 _id 存在 → 替換整份文件 (相當 upsert)。
  • 若 _id 不存在 → 插入新文件。

四、文件刪除 remove()

db.COLLECTION_NAME.remove(DELETION_CRITERIA)

範例

> db.shiyanlou.remove({ "name": "Bob" })
WriteResult({ "nRemoved": 1 })

執行後可用 find() 驗證刪除結果。

五、核心指令速查表

操作指令語法說明
建立集合db.createCollection(name, options)可設定 capped、size、max 等屬性
刪除集合db.COLLECTION.drop()永久移除集合與索引
插入文件db.COLLECTION.insert(doc)自動產生 _id
更新文件db.COLLECTION.update(query, update, options)支援 $set, $inc, $push 等運算子
替換文件db.COLLECTION.save(doc)依 _id 判斷 upsert 或 replace
刪除文件db.COLLECTION.remove(query)符合條件者全刪 (單文件用 justOne:true)

實務建議

  1. 生產環境建議使用 updateOne、updateMany、deleteOne、deleteMany (MongoDB 3.2+ 新 API),語意更清晰。
  2. 大量寫入時可使用 insertMany、bulkWrite 提升效能。
  3. 更新條件務必加上索引欄位,避免全表掃描。
  4. 重要資料刪除前建議先備份或啟用 change streams 稽核。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved