零基礎MongoDB入門:從命令行到圖形化工具

MongoDB是一種流行的非關係型數據庫(NoSQL數據庫),它以文檔形式存儲數據,結構靈活,易於擴展,非常適合快速開發和處理大量非結構化或半結構化數據。對於零基礎的同學來說,MongoDB的學習曲線相對平緩,今天我們就從最基礎的概念和操作開始,一步步走進MongoDB的世界。

一、MongoDB是什麼?

簡單來說,MongoDB是一個基於分佈式文件存儲的數據庫。它不像MySQL那樣用“表”來存儲數據,而是用“文檔”(類似JSON格式的鍵值對)來存儲數據,並且將多個文檔組織成一個“集合”(類似MySQL的“表”),多個集合又屬於一個“數據庫”

舉個例子:如果把MySQL比作“表格工廠”(每行是記錄,每列是字段),MongoDB就像“積木倉庫”——你可以自由組合不同的“積木”(字段),靈活搭建出需要的數據結構。

二、安裝MongoDB

1. 本地安裝(推薦)

  • Windows系統
    從MongoDB官網下載安裝包(https://www.mongodb.com/try/download/community),選擇對應版本(推薦64位),按提示安裝,安裝過程中記得勾選“Add to PATH”(方便命令行調用)。安裝完成後,打開命令提示符(CMD),輸入 mongod --version 驗證是否安裝成功。

  • Linux系統
    以Ubuntu爲例,打開終端執行:

  sudo apt update && sudo apt install -y mongodb

啓動服務:sudo systemctl start mongod,設置開機自啓:sudo systemctl enable mongod

  • Mac系統
    推薦用Homebrew安裝:brew tap mongodb/brew && brew install mongodb-community,啓動服務:brew services list | grep mongodb-community 查看狀態,沒啓動的話用 brew services start mongodb-community

2. 驗證安裝

安裝完成後,打開新的終端/命令行窗口,輸入 mongo 即可連接到本地MongoDB服務(默認端口27017),如果顯示類似 > 提示符,說明連接成功!

三、MongoDB命令行基礎操作

MongoDB的核心交互方式是命令行工具(mongo shell),我們先從最基礎的數據庫、集合、文檔操作開始。

1. 數據庫操作

  • 切換/創建數據庫
    MongoDB中沒有“創建數據庫”的顯式命令,直接用 use 數據庫名 即可(如果數據庫不存在,會自動創建,後續操作會關聯到該數據庫)。
    例如:use mydb(切換到名爲“mydb”的數據庫,不存在則創建)。

  • 查看所有數據庫
    輸入 show dbs(注意:空數據庫不會顯示,只有包含數據的數據庫纔會列出)。

  • 查看當前數據庫
    輸入 db,會顯示當前選中的數據庫名稱(比如剛創建的“mydb”)。

  • 刪除數據庫
    先切換到目標數據庫(use mydb),然後執行 db.dropDatabase(),會返回 { "dropped" : "mydb", "ok" : 1 },表示刪除成功。

2. 集合操作(Collection)

集合相當於關係型數據庫中的“表”,是一組文檔的集合。MongoDB中集合無需顯式創建,插入文檔時會自動創建(但也可以用 createCollection 顯式創建)。

  • 查看集合
    切換到目標數據庫後,輸入 show collectionsshow tables(效果相同),會列出該數據庫下的所有集合。

  • 刪除集合
    先切換到目標數據庫,執行 db.集合名.drop(),例如 db.students.drop(),返回 true 表示刪除成功。

3. 文檔操作(Document)

文檔是MongoDB的最小數據單元,格式爲JSON(類似鍵值對),支持嵌套結構,非常靈活。我們重點掌握增(Create)、查(Read)、改(Update)、刪(Delete) 操作,簡稱CRUD。

(1)插入文檔(Create)

insertOne(單條)或 insertMany(多條)插入文檔。
示例:創建一個“學生”集合,插入1條學生數據:

// 插入單條文檔
db.students.insertOne({
  name: "小明",
  age: 18,
  hobbies: ["籃球", "編程"], // 數組類型
  address: { city: "北京", district: "海淀區" } // 嵌套文檔
})

返回結果類似:

{
  "acknowledged" : true,
  "insertedId" : ObjectId("60d21b4660d21b4660d21b46"), // 自動生成的唯一ID
  "ok" : 1
}

插入多條文檔

db.students.insertMany([
  { name: "小紅", age: 19, hobbies: ["畫畫", "音樂"] },
  { name: "小剛", age: 20, hobbies: ["跑步", "遊戲"] }
])
(2)查詢文檔(Read)

find() 方法查詢,默認返回集合中所有文檔(類似MySQL的 SELECT * FROM)。
- 查詢所有文檔

  db.students.find() // 返回一個遊標,需遍歷查看

若結果較多,光標默認顯示前20條,可通過 it 遍歷查看剩餘結果,或用 toArray() 轉爲數組:

  db.students.find().toArray() // 返回所有學生數據數組
  • 按條件查詢
    find({條件}),例如查詢年齡等於18的學生:
  db.students.find({ age: 18 })

常用條件操作符:$gt(大於)、$lt(小於)、$eq(等於,可省略)、$in(包含)等。
示例:查詢年齡大於18且小於20的學生:

  db.students.find({ age: { $gt: 18, $lt: 20 } })
(3)更新文檔(Update)

updateOne(更新1條)或 updateMany(更新多條),需指定過濾條件更新內容

  • 基礎更新(替換文檔)
    $set 或直接賦值(替換整個文檔)。
    示例:將name爲“小明”的學生年齡改爲20:
  db.students.updateOne(
    { name: "小明" }, // 過濾條件:name是“小明”
    { $set: { age: 20 } } // 更新內容:僅修改age字段
  )

返回結果:

  { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
  • 增量更新
    如果需要對數值字段做自增(如age+1),用 $inc 操作符:
  db.students.updateOne({ name: "小紅" }, { $inc: { age: 1 } }) // age+1
(4)刪除文檔(Delete)

deleteOne(刪除1條)或 deleteMany(刪除多條)。

  • 刪除1條
  db.students.deleteOne({ name: "小剛" }) // 刪除name爲“小剛”的第一條
  • 刪除多條
  db.students.deleteMany({ age: { $lt: 19 } }) // 刪除所有年齡小於19的學生

四、圖形化工具:MongoDB Compass

命令行操作適合編程,但日常管理數據時,圖形化工具更直觀。推薦使用MongoDB官方工具 MongoDB Compass,安裝後直接連接本地數據庫即可。

1. 安裝與連接

  • 官網下載安裝包:https://www.mongodb.com/products/compass
  • 安裝完成後打開,點擊“Connect”,默認連接本地MongoDB(地址:mongodb://localhost:27017),點擊“Connect”即可。

2. 工具功能

  • 查看數據庫/集合:左側導航欄顯示所有數據庫和集合,點擊集合可查看所有文檔。
  • 增刪改查:選中集合後,右側可直接輸入JSON格式文檔(插入),或點擊“Edit”修改、“Delete”刪除文檔。
  • 搜索與篩選:頂部有搜索框,可按條件過濾文檔(類似命令行的 find())。

五、總結與學習建議

MongoDB的核心優勢是靈活的文檔結構無固定表結構,適合快速迭代的項目。對於零基礎同學,建議:

  1. 多動手練習:從命令行插入、查詢簡單文檔開始,熟悉CRUD操作。
  2. 對比關係型數據庫:理解“集合→表”“文檔→行”的對應關係,降低認知成本。
  3. 重點關注文檔嵌套:MongoDB支持多層嵌套文檔,這是處理複雜數據的關鍵(比如存儲用戶信息+地址+訂單)。

如果需要深入學習,可進一步瞭解索引(createIndex)、聚合管道(aggregate)、副本集等進階內容,但打好基礎後再深入會更輕鬆!MongoDB入門不難,關鍵是多敲命令、多嘗試,祝你學習愉快~

小夜