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: "張三" })
四、常見問題與注意事項¶
-
服務未啓動:若執行
mongo時報“連接失敗”,檢查MongoDB服務是否啓動:
- Windows:任務管理器→服務→MongoDB是否運行;
- Mac/Linux:sudo systemctl status mongod(查看狀態),sudo systemctl start mongod(啓動服務)。 -
數據類型:MongoDB支持字符串、數字、布爾、數組、嵌套對象等類型,例如
hobbies: ["閱讀", "跑步"]是數組類型。 -
遠程連接:若需連接遠程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命令查看支持的方法。