MongoDB Shell是一個交互式工具,讓你能用命令行直接和MongoDB數據庫“對話”。它基於JavaScript語法,上手簡單,特別適合初學者熟悉數據庫的基本操作。
一、什麼是MongoDB Shell?¶
MongoDB Shell(簡稱mongo)是MongoDB官方提供的命令行環境,你可以在這裏執行創建、查詢、修改、刪除數據等操作。它讓你無需圖形界面,就能高效管理數據庫,尤其適合Linux/Windows/Mac系統。
二、安裝與啓動MongoDB Shell¶
- 安裝MongoDB:先確保你已安裝MongoDB(官網可下載安裝包)。安裝完成後,Shell會隨MongoDB一起安裝。
- 啓動Shell:打開終端/命令提示符,輸入
mongo即可進入Shell環境。
- 成功啓動後,你會看到類似以下提示:
MongoDB shell version v6.0.0
connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000
Implicit session: session { "id" : UUID("...") }
MongoDB server version: 6.0.0
>
- 這裏的
>就是Shell的命令提示符,接下來可以輸入命令了!
三、基礎操作:連接與切換數據庫¶
MongoDB的數據庫操作基於“當前數據庫”,用use命令切換。
- 查看當前數據庫:輸入db,會顯示當前操作的數據庫(默認是test)。
> db
test
- 切換數據庫:用
use 數據庫名切換,例如切換到myDB(若不存在,插入數據時會自動創建)。
> use myDB
switched to db myDB
> db
myDB
- 連接遠程數據庫:如果數據庫在遠程服務器,用
mongo --host 遠程IP --port 端口號連接(默認端口27017)。
四、創建數據:插入文檔到集合¶
MongoDB中,文檔(類似JSON)是最小數據單元,集合(類似關係型數據庫的“表”)是文檔的容器。
- 自動創建集合:無需提前創建集合,插入數據時會自動生成。例如,向students集合插入一條文檔:
> db.students.insertOne({name: "小明", age: 18, major: "計算機"})
{
"acknowledged" : true,
"insertedId" : ObjectId("650a1b2c3d4e5f6a7b8c9d0e"),
"insertedCount" : 1
}
insertOne():插入單條文檔;insertMany():插入多條(例如db.students.insertMany([{...}, {...}]))。- 插入後,MongoDB自動爲每條文檔生成唯一的
_id(如ObjectId("...")),無需手動設置。
五、讀取數據:查詢文檔¶
用find()方法查詢集合數據,搭配pretty()格式化輸出更易讀。
- 查詢所有文檔:db.集合名.find().pretty()
> db.students.find().pretty()
{
"_id" : ObjectId("650a1b2c3d4e5f6a7b8c9d0e"),
"name" : "小明",
"age" : 18,
"major" : "計算機"
}
- 帶條件查詢:給
find()加過濾條件,例如查詢年齡18的學生:
> db.students.find({age: 18}).pretty()
{
"_id" : ObjectId("650a1b2c3d4e5f6a7b8c9d0e"),
"name" : "小明",
"age" : 18,
"major" : "計算機"
}
- 查詢單條數據:用
findOne()快速獲取第一條匹配結果:
> db.students.findOne({name: "小明"})
{
"_id" : ObjectId("650a1b2c3d4e5f6a7b8c9d0e"),
"name" : "小明",
"age" : 18,
"major" : "計算機"
}
六、更新數據:修改文檔¶
用updateOne()(更新一條)或updateMany()(更新多條),結合$set操作符修改字段。
- 更新單條數據:例如把小明的年齡改爲20:
> db.students.updateOne(
{name: "小明"}, // 匹配條件
{$set: {age: 20}} // 更新操作
)
{
"acknowledged" : true,
"matchedCount" : 1,
"modifiedCount" : 1
}
- 結果說明:
matchedCount=1表示找到1條匹配數據,modifiedCount=1表示成功更新1條。 - 更新多條數據:把所有年齡大於18的學生年齡+1:
> db.students.updateMany(
{age: {$gt: 18}}, // 條件:年齡>18
{$inc: {age: 1}} // $inc是自增1
)
七、刪除數據:移除文檔¶
用deleteOne()(刪一條)或deleteMany()(刪多條)。
- 刪除單條數據:刪除年齡20的學生:
> db.students.deleteOne({age: 20})
{
"acknowledged" : true,
"deletedCount" : 1
}
- 刪除全部數據:清空
students集合(謹慎使用!):
> db.students.deleteMany({})
{
"acknowledged" : true,
"deletedCount" : 5 // 假設集合有5條數據
}
八、管理數據庫與集合¶
- 查看所有數據庫:
show dbs(顯示所有已存在的數據庫,注意:空數據庫不會顯示)。 - 刪除當前數據庫:先切換到目標數據庫,再執行
db.dropDatabase():
> use myDB
switched to db myDB
> db.dropDatabase()
{ "dropped" : "myDB", "ok" : 1 }
- 刪除集合:
db.集合名.drop(),例如刪除students集合:
> db.students.drop()
true // 返回true表示刪除成功
九、進階小技巧¶
- 統計文檔數量:
db.集合名.countDocuments()
> db.books.countDocuments({author: "小明"}) // 統計作者是小明的書的數量
- 限制查詢結果:用
limit()只取前N條:
> db.books.find().limit(3).pretty() // 只返回前3條數據
十、學習建議¶
- 多動手實踐:跟着示例輸入命令,嘗試插入、查詢、更新不同數據。
- 查閱官方文檔:MongoDB Shell支持完整的JavaScript語法,遇到複雜操作可參考官方手冊。
- 從簡單到複雜:先掌握CRUD基礎,再學習聚合查詢、索引等進階內容。
MongoDB Shell的魅力在於“零配置”——無需提前創建數據庫/表,插入數據即生效。通過命令行快速試錯,是入門MongoDB最直接的方式。現在,打開你的終端,開始體驗用代碼“玩轉”數據庫吧!