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 collections或show 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的核心優勢是靈活的文檔結構和無固定表結構,適合快速迭代的項目。對於零基礎同學,建議:
- 多動手練習:從命令行插入、查詢簡單文檔開始,熟悉CRUD操作。
- 對比關係型數據庫:理解“集合→表”“文檔→行”的對應關係,降低認知成本。
- 重點關注文檔嵌套:MongoDB支持多層嵌套文檔,這是處理複雜數據的關鍵(比如存儲用戶信息+地址+訂單)。
如果需要深入學習,可進一步瞭解索引(createIndex)、聚合管道(aggregate)、副本集等進階內容,但打好基礎後再深入會更輕鬆!MongoDB入門不難,關鍵是多敲命令、多嘗試,祝你學習愉快~