[英]enrich one JSON array with data from another based on multiple conditions using dataweave 2.0
最近,我問了這個關於基於多個條件過濾和合並兩個 JSON 的問題。
但是,現在我需要用mysql
變量數據來豐富mongo
變量。 如果條件
mongo.NUM_CONTROL = mysql.DOCNUM
mongo.NUM_ITEM = mysql.LIN_NUM_ITEM
不匹配,每個 mongo 元素保持不變。 但是如果它們匹配,每個mongo
元素都必須用mysql
等效項來豐富。
您可以使用以下 dataweave 表達式:
%dw 2.0
import * from dw::core::Arrays
output application/json
---
leftJoin(mongo, mysql, (m) -> m.NUM_CONTROL ++ "_" ++ m.NUM_ITEM, (s) -> s.DOCNUM ++ "_" ++ s.LIN_NUM_ITEM) map (item, index) ->
item.l ++ (if (item.r != null) item.r else {})
為了左連接兩個數組,需要一個公共鍵字段。 在這種情況下,根據您的場景,常用鍵對應於:
因此,將 mongo.NUM_CONTROL 與 mysql.NUM_ITEM 連接起來將為 mongo 提供唯一的記錄鍵,而將 mysql.DOCNUM 和 mysql.LIN_NUM_ITEM 連接起來將為 mysql 提供唯一的記錄鍵。 現在,這些計算出的鍵可用於左連接數組。 使用下划線字符(或任何其他非數字字符,例如管道)作為分隔符將確保匹配正確的記錄(如果您有一個 NUM_CONTROL = 1 和 NUM_ITEM = 11 的 mongo 記錄和一個 mysql 記錄使用 DOCNUM = 11 和 LIN_NUM_ITEM = 1,如果沒有分隔符,mongo 和 mysql (111) 的計算鍵值將相同,並且它們會錯誤地連接。使用分隔符,這不會發生,因為 mongo 計算的鍵將是1_11 和 mysql 計算出的密鑰 11_1)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.