kettle MongoDB Output 配置說明

小破孩楼主發表於2024-03-07

基本配置

Configure Connection Tab

kettle MongoDB Output 配置說明
資料庫連線
  • Connection timeout:嘗試連線資料庫所等待的最大時間(毫秒),空為無限,建議5000
  • Socket timeout:sql在執行成功之前等待讀寫操作的時間(毫秒),空為無限,建議5000

Output Options Tab

kettle MongoDB Output 配置說明
輸入表與相關設定
  • Truncate option:在資料傳輸前清空表
  • Update 與 Upsert:
UpdateUpsert是否更新是否插入
未選 未選 不更新 只插入
選中 未選 只更新 不插入
選中 選中 更新 插入
  • Multi-update:更新所有匹配的文件,預設是隻更新符合查詢條件的第一個
  • Modifier update:允許修飾符運算子用於修改匹配文件中的各個欄位($運算子),此類更新速度快,涉及的網路流量最小。只有當這個選項選中時,Mongo Document Fields Tab 的 Modifier operation 和 Modifier policy 才會生效

Mongo Document Fields Tab

kettle MongoDB Output 配置說明
輸入欄位與查詢條件
  • Name:欄位名
  • Mongo document path:欄位路徑,可以為 Name 設定新欄位名
kettle MongoDB Output 配置說明
示例
  • Use field name:為 N 時欄位會使用 Mongo document path 為新欄位名
  • JSON:以 json 格式儲存資料
  • Match field for upsert column:為 Y 的欄位將作為查詢條件
  • Modifier operation:當 Output Options Tab 的 Modifier update 選中時,此設定生效,其中,N/A 為不更新,$set 為覆蓋更新 $inc 為數字的加法更新,$push 為陣列的追加更新
  • Modifier policy:當 Output Options Tab 的 Modifier update 選中時,此設定生效,其中,Insert 為插入,Update 為更新,可為不同欄位設定不同的更新方法

示例

需求1,更新標誌位

讀取資料後將欄位hours更改,之後需要將改動更新到原資料,但是資料的唯一標識就是hours,所以在hours更改之前複製給old_hours,在最後根據old_hours把新hours更新。

kettle MongoDB Output 配置說明
配置1
  • 只勾選 Update 確保作業只更新不插入
  • 勾選 Modifier update 從而只更新特定的欄位,否則會更新所有欄位,沒有值的為 null
kettle MongoDB Output 配置說明
配置2
  • 欄位 old_hours 必須指定 Mongo document path 為 hours,同時將 Use field name 設為 N,否則 kettle 找不到此欄位
  • 欄位 old_hours 的 Match field for upsert column 設為 Y,以欄位作為更新的查詢條件
  • 將 old_hours 的 Modifier operation 設為 N/A,hours 的 Modifier operation 設為 $set,即可達到以 old_hours 查詢然後更新為 hours 的效果
  • old_hours 的 Modifier operation 設為 N/A 之後,Modifier policy 怎麼設定都無所謂,沒有效果

相關文章