DAY3 MongoDB 連線與 IDE
MongoDB 的連線方式主要有三種,分別是:
- legacy mongo shell
- mongo shell
- IDE
學習以及開發階段,我會比較推薦使用 legacy mongo shell 搭配 IDE 的方式,不過這只是建議並非絕對。主要是 mongo shell 固然強大,但需要額外下載才能使用,一旦遇上沒有 mongo shell 的環境,在反應上可能會略差一點,尤其是線上產品的支援環境不見得會有,有的話那就萬幸了。
legacy mongo shell
這邊說的 legacy mongo shell 執行檔就是 5.0 之前的版本,也就是安裝好 MongoDB 內建的版本。會推薦的原因是少了 intellisense (是缺點也是優點),因此使用上會對指令記憶度最高,且不受環境影響,有安裝 MongoDB 的,肯定也會有這套。
如果使用 docker,那還真的是本機不見得會有呢(馬上打臉上面),解決方案就是連進 container 使用,docker exec -it mongo bash
,還是有 mongo 可以使用的啦!
連線方法
mongo --host localhost --port 27666
1 | ➜ vscode mongo --host localhost --port 27666 |
可以從上面看到雖然我的 MongoDB 是 5.0.2 版本,但還是在使用 MongoDB shell v4.2.7
,系統會提出警示版本不搭配,至於會出現什麼錯誤,我目前是還沒碰過。
mongo shell
MongoDB 5.0 之後 Mongo shell 正式被搬出來,需要另外進行安裝。那麼 mongosh 好在哪呢?
- 針對 Intelligence 功能更強化
- 對於很多舊式的語法都會給予提醒或者直接拒絕
- 如果連線對象是 replica set 的次節點,也不用特別再指定
rs.secondaryOk()
- 型別修改,從
NumberInt
改為Int32
- 可回顧每個 session 的 log。
- 可回顧 mongosh 的指令歷史
- 回傳的文字有更多色彩,方便查看
- 格式呈現更方便查看
- 更強大的語法錯誤提示
mongosh session log
- 先輸入
mongosh
確認本次的 log id
1 | mongosh |
- 再到
~/.mongodb/mongosh/[logId]_log
查看
1 | cat ~/.mongodb/mongosh/<LogID>_log |
mongosh command history
查看歷史輸入指令,一樣也存在 mongosh
資料夾底下,完整路徑為:
~/.mongodb/mongosh/.mongosh_repl_history
安裝 mongosh
MacOS 安裝方法很簡單
- 安裝 Homebrew
- 執行
brew install mongosh
- 允許 mongosh 執行權限(macOS安全)
大功告成囉~
連線方法
其實一模一樣,只是改用 mongosh 執行檔
mongosh --host localhost --port 27666
1 | ➜ vscode mongosh --host localhost --port 27666 |
仔細看的話會多了這次的 Log ID,可以用此 ID 去查到這次
離線安裝
- 從官網下載 mongosh 壓縮檔
- 解壓縮
unzip xxx.zip
- 提升 mongosh 執行檔的權限
chmod +x bin/mongosh
chmod +x bin/mongocryptd-mongosh
- 設定 mongosh 執行檔的環境路徑
1 | sudo cp bin/mongosh /usr/local/bin/ |
- 允許 mongosh 執行權限(macOS安全)
IDE
其實系統在開發時,我主要還是以 IDE 為主且還是兩套,因為各有優缺,所以才會同時使用。
Robo 3T
2022/04/24 updated
robo 3t 在官網已經不提供了,可以參考這篇 Robo 3T 免費版 MongoDB IDE 或者直接到 robomongo github page 下載。
這套是 robomongo 的前身,後來被整併到 3T 軟體底下,是完全免費且開源的軟體。功能較為陽春但很輕巧,開啟連線速度極快,是我大部分開發時使用的軟體。
Robo 3T 官方下載位置,同時可以看到另外一套叫做Studio 3T
,是另一款須付費的連線IDE,更多圖形化的工具讓你減少指令的操作以及固定排成事務。我本身是沒有使用過,因為目前的功能都足以應付開發上使用了。
連線方法
Step1 點擊
Create
設定連線資訊Step2 輸入連線資訊後按下
save
連線後就能夠看到整個介面,可以多行編輯你的語法,資料區也可以用 json、table 方式呈現,算是五臟俱全的 IDE
MongoDB Compass Community
由 MongoDB 開發人員開發的,如標題,同樣有分為社群版和企業版。在自己學習 MongoDB 的情況下,使用社群版即可。它的特點是:
- 圖形化介面遠勝於 Robo 3T
- 畫面上有更多的資訊,像是 Collection 大小,文件的大小
- 更強大的匯入匯出資料功能
- aggregation pipeline builder
- 圖形化的 explain
其實都遠勝於 Robo 3T,但唯獨它的開啟速度真的略慢,而我也不常使用這些功能(或是直接使用指令),因此比較常直接使用 Robo 3T。
連線方法
照著步驟,一樣的連線資訊,只是改成使用 mongodb 的連線協定。mongodb://localhost:27666
可以看到功能更豐富了,包含上述的那些,請各位自行去摸索看看了