Mac環境下安裝MongoDB資料庫

xiangzhihong發表於2023-02-17

一、下載安裝

1.1 下載MongoDB

首先,從MongoDB官網下載自己想要使用的版本。

image.png

解壓縮下載的壓縮包重新命名為mongodb,將mongodb資料夾複製到/usr/local目錄下。

image.png
當然,除了上面的安裝方式外,我們還可以使用Mac OSX的brew來進行安裝,安裝的命令如下:

brew tap mongodb/brew
brew install mongodb-community@4.4

1.2 配置環境變數

開啟.zshrc 檔案,若沒有此檔案可以建立一個

open ~/.zshrc    //開啟
touch .zshrc    //建立

把 MongoDB 的二進位制命令檔案目錄(安裝目錄/bin)新增到 PATH 路徑中

export PATH=${PATH}:/usr/local/mongodb/bin

編輯完成後儲存並退出,然後使用source .zshrc命令使配置立即生效。

1.3 建立日誌及資料目錄

在 /usr/local/mongodb 目錄下新建兩個資料夾 data 和 log,用於儲存 MongoDB 的資料和日誌。

//新建data 和 log資料夾
sudo mkdir -p /usr/local/mongodb/data
sudo mkdir -p /usr/local/mongodb/log


//分配讀寫許可權
sudo chown xzh /usr/local/mongodb/data
sudo chown xzh /usr/local/mongodb/log

其中,xzh為當前的使用者名稱,您需要修改為您自己的系統使用者名稱。接下來,我們需要配置系統環境變數。
 

1.4 啟動MongoDB服務

完成配置後,使用下面的命令來啟動 MongoDB 服務。

mongod --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/log/mongo.log --fork

引數的說明如下:

  • --dbpath 用來設定資料的存放目錄
  • --logpath 用來設定日誌的存放目錄
  • --fork 用來設定在後臺執行

 
最後,我們使用mongod -version命令來驗證 MongoDB 是否安裝成功,如果出現類似下面所示的內容,則說明 MongoDB 安裝成功。

db version v6.0.4
Build Info: {
    "version": "6.0.4",
    "gitVersion": "44ff59461c1353638a71e710f385a566bcd2f547",
    "modules": [],
    "allocator": "system",
    "environment": {
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

不過,每次開機都要輸入一長串的命令啟動 mongodb是十分麻煩的,我們可以使用配置檔案的方式來啟動。首先,在根目錄下新建一個conf資料夾,並新建一個mongod.conf,配置內容如下:

# 資料庫路徑
dbpath=/usr/local/mongodb/data
# 日誌輸出檔案路徑
logpath=/usr/local/mongodb/log/mongo.log
# 錯誤日誌採用追加模式
logappend=true
# 啟用日誌檔案,預設啟用
journal=true
# 過濾一些無用的日誌資訊,若需要除錯設定為false
# quite=true
# 埠號 預設為27017
port=27017
# 是否需要校驗,測試環境可以關閉,生產環境則需要開啟
# auth=true
# 註冊服務,這樣就可以保證電腦啟動服務就可以使用,避免每次關閉後還需要重新啟動服務
fork=true

然後,使用配置好的檔案進行啟動。

mongod --config /usr/local/mongodb/conf/mongo.conf

注意,使用mongod --config啟動時,後面跟的是mongo.conf檔案的命令。啟動成功之後,會輸出如下的提示。

about to fork child process, waiting until server is ready for connections.
forked process: 3178
child process started successfully, parent exiting

接著,我們輸入mongo命令就可以進入命令列中的編輯區,如下圖。

image.png

二、視覺化工具Studio 3T

通常,直接操作MongoDB體驗並不是很友好,所以在實際使用過程中,我們需要安裝一些視覺化的操作工具,比如Studio 3T。首先,下載Studio 3T

image.png

下載完後直接安裝Studio 3T,然後開啟並連線MongoDB資料庫。

image.png

此次連線的是本地的MongoDB,所以Server填寫localhost,埠預設為27017。

image.png

image.png

三、MongoDB常用語法

3.1 基本操作

SQL與MongoDB對比

image.png

 
資料庫操作

  • 建立資料庫:use demo
  • 檢視資料庫:show dbs
  • 刪除資料庫:db.dropDatabase()

集合(表)操作

  • 建立集合:db.createCollection(name)
  • 檢視集合:show collections
  • 刪除集合:db.collection.drop()
     

文件操作

  • 建立文件:db.collection.insertOne({})、db.collection.insertMany([])
  • 檢視文件:db.collections.find({})
  • 刪除文件:db.collection.deleteOne()、db.collection.deleteMany()
  • 更新文件:db.collection.update({},{},false,true)

3.2 使用示例

接著,我們使用上文提到的命令來簡單的建立一個資料庫,並對錶中的資料進行CRUD操作。

檢視資料庫

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

建立資料庫

> use demo
switched to db demo

建立集合

> db.createCollection("users")
{ "ok" : 1 }

檢視集合

> show collections
users

建立空文件

> db.users.insertOne({})
{
    "acknowledged" : true,
    "insertedId" : ObjectId("62d917201c77c8032f399201")
}

建立文件並新增資料

> db.users.insertOne({userId: 1, userName:'Han Qiao', age: 30, score:300})
{
    "acknowledged" : true,
    "insertedId" : ObjectId("62d9173f1c77c8032f399202")
}

建立文件並新增多條資料

> db.users.insertMany([{userId: 2, userName:'Jack', age: 40, score:400},{userId: 3, userName:'Henry', age: 50, score:200}])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("62d917951c77c8032f399203"),
        ObjectId("62d917951c77c8032f399204")
    ]
}

檢視文件

> db.users.find()
{ "_id" : ObjectId("62d917201c77c8032f399201") }
{ "_id" : ObjectId("62d9173f1c77c8032f399202"), "userId" : 1, "userName" : "Han Qiao", "age" : 30, "score" : 300 }
{ "_id" : ObjectId("62d917951c77c8032f399203"), "userId" : 2, "userName" : "Jack", "age" : 40, "score" : 400 }
{ "_id" : ObjectId("62d917951c77c8032f399204"), "userId" : 3, "userName" : "Henry", "age" : 50, "score" : 200 }

刪除指定文件

> db.users.deleteOne({ "_id" : ObjectId("62d917201c77c8032f399201") })
{ "acknowledged" : true, "deletedCount" : 1 }
> db.users.find()
{ "_id" : ObjectId("62d9173f1c77c8032f399202"), "userId" : 1, "userName" : "Han Qiao", "age" : 30, "score" : 300 }
{ "_id" : ObjectId("62d917951c77c8032f399203"), "userId" : 2, "userName" : "Jack", "age" : 40, "score" : 400 }
{ "_id" : ObjectId("62d917951c77c8032f399204"), "userId" : 3, "userName" : "Henry", "age" : 50, "score" : 200 }

條件查詢

> db.users.find({age:{$gt:35}})
{ "_id" : ObjectId("62d917951c77c8032f399203"), "userId" : 2, "userName" : "Jack", "age" : 40, "score" : 400 }
{ "_id" : ObjectId("62d917951c77c8032f399204"), "userId" : 3, "userName" : "Henry", "age" : 50, "score" : 200 }

更新文件,將age大於45的score更新為600

> db.users.update({age:{$gt:45}},{$set:{score:600}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.find()
{ "_id" : ObjectId("62d9173f1c77c8032f399202"), "userId" : 1, "userName" : "Han Qiao", "age" : 30, "score" : 300 }
{ "_id" : ObjectId("62d917951c77c8032f399203"), "userId" : 2, "userName" : "Jack", "age" : 40, "score" : 400 }
{ "_id" : ObjectId("62d917951c77c8032f399204"), "userId" : 3, "userName" : "Henry", "age" : 50, "score" : 600 }

當然,我們也可以開啟Studio 3T,使用Studio 3T來對資料進行操作,如下圖。

image.png

相關文章