一、下載安裝
1.1 下載MongoDB
首先,從MongoDB官網下載自己想要使用的版本。
解壓縮下載的壓縮包重新命名為mongodb,將mongodb資料夾複製到/usr/local目錄下。
當然,除了上面的安裝方式外,我們還可以使用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命令就可以進入命令列中的編輯區,如下圖。
二、視覺化工具Studio 3T
通常,直接操作MongoDB體驗並不是很友好,所以在實際使用過程中,我們需要安裝一些視覺化的操作工具,比如Studio 3T。首先,下載Studio 3T。
下載完後直接安裝Studio 3T,然後開啟並連線MongoDB資料庫。
此次連線的是本地的MongoDB,所以Server填寫localhost,埠預設為27017。
三、MongoDB常用語法
3.1 基本操作
SQL與MongoDB對比
資料庫操作
- 建立資料庫: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來對資料進行操作,如下圖。