新手必學MongoDB:從安裝到查詢的完整流程

MongoDB是一種流行的文檔型數據庫,它不像傳統的關係型數據庫(如MySQL)那樣需要預先定義表結構,而是用類似JSON的格式(BSON)來存儲數據,每個數據項(文檔)可以有不同的字段,非常靈活,特別適合快速開發和存儲非結構化或半結構化數據。對於新手來說,MongoDB的語法簡單直觀,入門門檻較低,是學習數據庫技術的絕佳選擇。

一、安裝MongoDB

1. 確認系統與下載

MongoDB支持Windows、macOS、Linux等主流系統,安裝前需確認系統版本(如Windows 10/11、macOS 12+、Ubuntu 20.04+等)。
- Windows用戶
從MongoDB官網(https://www.mongodb.com/try/download/community)下載對應版本的安裝包(推薦選擇“MSI Installer”,即安裝程序)。
安裝時注意勾選“Add MongoDB to PATH”(添加環境變量,方便後續命令行操作),其他選項保持默認即可,安裝完成後會自動啓動MongoDB服務。

  • macOS用戶
    推薦用Homebrew安裝(需先安裝Homebrew,未安裝可參考官網https://brew.sh/)。
    打開終端,執行:
  brew tap mongodb/brew
  brew install mongodb-community

安裝完成後,啓動MongoDB服務:brew services start mongodb-community

  • Linux用戶(以Ubuntu爲例):
    執行以下命令添加MongoDB源並安裝:
  wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
  echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
  sudo apt update
  sudo apt install -y mongodb-org

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

2. 驗證安裝

安裝完成後,打開命令行(Windows用cmd/PowerShell,Mac/Linux用終端),輸入mongo(或mongosh,新版本可能用mongosh),若能看到類似以下內容,則安裝成功:

> MongoDB shell version v6.0.5
> connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.6.1
> Implicit session: session { "id" : UUID("...") }
> MongoDB server version: 6.0.5
> >

此時已成功連接到本地MongoDB服務(默認端口27017)。

二、MongoDB基本概念

MongoDB的核心概念與關係型數據庫類似,但語法更簡潔:
- 數據庫(Database):存儲多個集合的容器,類似MySQL的“庫”。MongoDB默認有test(測試庫)、admin(管理庫)等,也可自定義。
- 集合(Collection):存儲文檔的容器,類似MySQL的“表”。集合無需預定義結構,可動態添加字段。
- 文檔(Document):MongoDB的最小數據單元,以JSON-like格式(BSON)存儲,包含多個鍵值對,類似MySQL的“行”。例如:

  {
    "name": "張三",
    "age": 25,
    "hobbies": ["閱讀", "編程"],
    "address": { "city": "北京", "street": "中關村大街" }
  }

三、基礎操作(增刪改查)

在MongoDB中,所有操作通過mongo/mongosh客戶端執行,以下是核心操作:

1. 連接與切換數據庫

  • 連接本地數據庫默認使用test庫,可通過use命令切換數據庫(若不存在則創建,需插入數據後才實際存在):
  > use mydb  # 切換到mydb庫(若不存在則創建空庫)
  switched to db mydb
  > db  # 查看當前數據庫
  mydb

2. 創建與插入數據

MongoDB無需顯式創建集合,插入數據時會自動創建集合。用insertOne()插入單條數據,insertMany()插入多條:

  • 插入單條文檔
  // 插入一個用戶信息到mydb庫的"users"集合(集合名可自定義)
  db.users.insertOne({
    name: "張三",
    age: 25,
    hobbies: ["閱讀", "跑步"],
    isStudent: false
  })

執行後返回:

  {
    "acknowledged": true,
    "insertedId": ObjectId("650a6f78d1e2f3a4b5c6d7e8")  // 文檔唯一ID,自動生成
  }

3. 查詢數據

find()查詢集合,返回符合條件的所有文檔;findOne()返回第一條匹配文檔。

  • 查詢所有文檔
  db.users.find()  // 返回users集合的所有文檔

若需格式化輸出,可加.pretty()

  db.users.find().pretty()  // 格式化顯示JSON,更易讀
  • 條件查詢
  // 查詢年齡大於20歲的用戶
  db.users.find({ age: { $gt: 20 } })  

  // 查詢姓名爲"張三"的用戶(精確匹配)
  db.users.find({ name: "張三" })  

  // 查詢姓名包含"三"的用戶(模糊匹配)
  db.users.find({ name: /三/ })  // 正則表達式

4. 更新數據

updateOne()更新匹配的第一條文檔,updateMany()更新所有匹配文檔。

  • 修改字段
  // 將姓名爲"張三"的用戶年齡改爲26
  db.users.updateOne(
    { name: "張三" },  // 條件:name=張三
    { $set: { age: 26 } }  // 更新操作:設置age字段爲26
  )
  • 注意$set是MongoDB的更新操作符,用於修改指定字段;若直接賦值(如{age: 26}),會覆蓋整個文檔(慎用)。

5. 刪除數據

deleteOne()刪除第一條匹配文檔,deleteMany()刪除所有匹配文檔。

  • 刪除姓名爲”張三”的用戶
  db.users.deleteOne({ name: "張三" })

四、常見問題與注意事項

  1. 服務未啓動:若執行mongo時報“連接失敗”,檢查MongoDB服務是否啓動:
    - Windows:任務管理器→服務→MongoDB是否運行;
    - Mac/Linux:sudo systemctl status mongod(查看狀態),sudo systemctl start mongod(啓動服務)。

  2. 數據類型:MongoDB支持字符串、數字、布爾、數組、嵌套對象等類型,例如hobbies: ["閱讀", "跑步"]是數組類型。

  3. 遠程連接:若需連接遠程MongoDB,需開啓服務並設置權限(生產環境需配置安全組/密碼),示例:

   // 連接遠程服務器(IP:192.168.1.100,端口27017)
   mongo --host 192.168.1.100 --port 27017 -u 用戶名 -p 密碼

五、總結

MongoDB作爲文檔型數據庫,以靈活的JSON結構和簡潔的語法降低了入門門檻。從安裝到基礎操作(增刪改查),核心是理解“數據庫→集合→文檔”的層級關係,以及find()insertOne()等基礎方法的使用。初學者可先通過本地練習,熟練後再嘗試結合代碼(如Python/Node.js)操作MongoDB,逐步深入學習聚合查詢、索引優化等進階內容。

提示:多動手實踐是關鍵,遇到問題可查閱MongoDB官方文檔(https://www.mongodb.com/docs/)或使用help命令查看支持的方法。

小夜