MongoDB Shell入門:用命令行操作數據庫超簡單

MongoDB Shell是一個交互式工具,讓你能用命令行直接和MongoDB數據庫“對話”。它基於JavaScript語法,上手簡單,特別適合初學者熟悉數據庫的基本操作。

一、什麼是MongoDB Shell?

MongoDB Shell(簡稱mongo)是MongoDB官方提供的命令行環境,你可以在這裏執行創建、查詢、修改、刪除數據等操作。它讓你無需圖形界面,就能高效管理數據庫,尤其適合Linux/Windows/Mac系統。

二、安裝與啓動MongoDB Shell

  1. 安裝MongoDB:先確保你已安裝MongoDB(官網可下載安裝包)。安裝完成後,Shell會隨MongoDB一起安裝。
  2. 啓動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表示刪除成功

九、進階小技巧

  1. 統計文檔數量db.集合名.countDocuments()
   > db.books.countDocuments({author: "小明"})  // 統計作者是小明的書的數量
  1. 限制查詢結果:用limit()只取前N條:
   > db.books.find().limit(3).pretty()  // 只返回前3條數據

十、學習建議

  • 多動手實踐:跟着示例輸入命令,嘗試插入、查詢、更新不同數據。
  • 查閱官方文檔:MongoDB Shell支持完整的JavaScript語法,遇到複雜操作可參考官方手冊
  • 從簡單到複雜:先掌握CRUD基礎,再學習聚合查詢、索引等進階內容。

MongoDB Shell的魅力在於“零配置”——無需提前創建數據庫/表,插入數據即生效。通過命令行快速試錯,是入門MongoDB最直接的方式。現在,打開你的終端,開始體驗用代碼“玩轉”數據庫吧!

小夜