好好用的MongoDB Compass
工欲善其事必先利其器!
接觸mongoDB也一段時間了,雖然使用command shell來操作/管理mongoDB是最直接的方式。
但是落落長的文字介面在解讀判斷上總是弱了一點;若是有工具可以提高工作上的便利及生產力,何樂不為呢?
跟大家介紹最近新接觸在mongoDB操作上的GUI工具: MongoDB Compass
MongoDB Compass 是MongoDB官方的提供的跨平台GUI工具,原本有分為Enterprise(付費)及Community;
但近來mongoDB佛心來了,將原本在Enterprise的功能全部分享給大家!
不說廢話,趕緊來介紹MongoDB Compass。
什麼是MongoDB Compass?
1.方便使用的GUI介面
2.直覺的CRUD編輯
3.即時統計圖形介面
4.分析/優化mongoDB性能
6.管理索引並查看利用率
7.更容易操作使用Aggregations
安裝要求:
MongoDB Compass提供Windows、MacOS、Linux環境版本
Windows:
1.64-bit version of Microsoft Windows 7 or later.
2.Microsoft .NET Framework version 4.5 or later.
3.MongoDB 3.6 or later.
MacOS:
1.64-bit version of macOS 10.12 or later.
2.MongoDB 3.6 or later.
Linux:
1.64-bit version of Ubuntu 14.04 or later.
2.64-bit version of RHEL 7+ or later.
3.MongoDB 3.6 or later.
小編是使用Mac, 以下操作會以Mac環境來示範;
下載MongoDB Compass:
前往以下網址,選取所需的版本
https://www.mongodb.com/try/download/compass?tck=docs_compass
下載後,進行安裝.
將MongoDB Compass Icon拖移到應用程式區後,啟動MongoDB Compass, 並進行MongoDB連接設定
先在 "New Connection : (FAVORITE)"上建立連結MongoDB的名稱
有2種方式來設定MongoDB的連結
1.直接輸入MongoDB URI
2.輸入MongoDB主機相關細節
點選"Fill in connection fields individually"
點選 Connect
正常連結後的畫面:
畫面介紹1:Database
在此圖,您可以單擊列表中的Database名稱以查看其collection。
或者,您可以通過單擊左側導航中的所需Database來查看collections。
右側的工作區內容
可以直覺的查看到那個DB:Storage sizek有多少、collections有幾個、Index有幾個;
也可以最右側的垃圾桶圖示,將此DB刪除。
畫面介紹2:Performance
圖形說明: (這些資訊都是即時性的)
OPERATIONS: CURD操作行為即時資訊, 來自於mongostat查詢結果
READ & WRITE: Database R/W 即時數量
NETWORK: 網路IN/OUT流量及連結數
MEMORY: 即時記憶體使用量
HOTTEST COLLECTIONS: 目前作業中的COLLECTIONS
SLOWEST OPERATIONS: 執行反應遲緩的作業(呈現回應超過100ms的作業)
尤其是這個SLOWEST OPERATIONS可好用啊!
很直覺的提供回應慢的job查看;
若是有Job執行太久、再也看不下去!也可以進一步刪除未執行完的作業;
Ex:
點擊回應慢的作業
在"Operation Details",點擊"KILL OP"
接下來介紹 MongoDB Compass在 Database 上的相關操作.
可以點選左上角的已定義的<FavoriteName>(1), 點選"Databases"(2)及所選的DB(3)回到操作畫面
這時候可以看到該Databaseh的collections的相關資訊
如點擊某collection, 可以看到該collection更詳細的相關資訊
在Documents:搜尋操作介面,點一下"OPTIONS";可以有進階的搜尋功能操作
sample:
將查詢導出為特定的程式語言: 小編覺得此工具"Export Query To Language",應該對PG很有幫忙
這個小工具可以將查詢欄中建立的查詢導出為支援的語言:Java、Node、C# 和 Python 3。
此功能利用在MongoDB Compass中建立的查詢,重新格式化程式碼, 以方便在您的應用程式使用。
也可查看最近的查詢: 最多可以查看最近查詢該集合的 20 個記錄
可將常用查詢加入"FAVORITES"儲存,下次直接點擊即可使用
Aggregations:
Aggregations是近來MongoDB推崇的項目;
是基於資料處理的聚合管道,將每個文件通過一個由多個階段(stage)組成的管道,可以對每個階段的管道進行分組、過濾等功能,然後經過一系列的處理,輸出相應的結果。
例如想計算不同科目上課學生的平均分數,是無法簡單下query得到結果的情況
使用Aggregations的方法,就可以容易得到結果;
簡單的說:Aggregations在執行的過程,是藉由管道的篩選聚合。每個stage篩選後結果為下個stage的資料搜尋來源!
如:
Schema:
點選 Schema 及 Analyze Schema, 將對該Collection內的資料進行分析;
如圖中,其表示在moduleVersion欄位,值為 v2.34.0的資料量佔該collection筆數的49%.
可參考這些欄位的資料分佈統計, 再來看看如何下查詢或調整資料結構.
PS:也可以配合Aggregations或Schema中的Filter, 搜尋後再進行資料分析.
Explain Plan: 評估查詢的效能
這個案例,是使用id欄位,進行模糊查詢。
(請大家見諒, 小編的DB資料量太少,反應不出查詢的回應時間)
查詢結果分析為:
id欄位沒有建立索引,整個查詢找了70筆資料(Documents Examined:70, 已是full scan), 才找到4筆(Documents Returned:4)
我們將id欄位加上索引後,重新再分析;得以下結果.
id欄位有建立索引,整個查詢經由索引(Index Keys Examined:70),直接找到4筆資料,並回應4筆(Documents Returned:4)
藉由Explain plan的分析執行, 更容易理解及評估分析查詢的效能; 若能妥善應用,可以幫助系統的效能提升。
Validation:
我們知道MongoDB屬於文件型資料庫,scheme free 是其非常重要的特性。
但是太Free了, 也容易造成資料型別的不一致,不一致的字段類型可能會為我們的數據帶來誤差, 反而影響查詢結果的正確性及效能。
因此適當的Validation設定,可以為Database把持並過濾掉dirty data;維護DB資料的可用性.
例如,已知id欄位為string型別.
藉由Vaildation我們設定會檢查id欄位為string型別, 若輸入資料id欄位不是該型別時則為出現Error
測試:
輸入 id:67890 (此筆資料, monogDB會定義為Int32型別), 故出現error message
validation的限制
validation不能對admin、local和config資料庫中的collection進行設置;
也不能對system.*這類collections進行validation設置;
MongoDB Compass是MongoDB官方推出連結MongoDB的工具,雖沒有華麗的功能畫面,但所提供的功能都是粉實用的。
這是我推薦它的原因!