MongoDB Compass

好好用的MongoDB Compass

侯清慈(AlexHou) 2021/08/08 17:19:48
10867

工欲善其事必先利其器!

接觸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的工具,雖沒有華麗的功能畫面,但所提供的功能都是粉實用的。

這是我推薦它的原因!

 

 

侯清慈(AlexHou)