最近,我问了this关于基于多个条件的过滤和合并两个JSON的问题。
但是,现在我需要mongo
变量来丰富mysql
变量数据。如果条件
mongo.NUM_CONTROL = mysql.DOCNUM
mongo.NUM_ITEM = mysql.LIN_NUM_ITEM
不匹配,每个芒果元素保持不变。但是,如果它们匹配,则每个mongo
元素都必须丰富mysql
等效项。
发布于 2020-10-02 20:13:25
您可以使用以下数据编织表达式:
%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 {})
为了将两个数组连接起来,需要一个公共密钥字段。在这种情况下,根据您的场景,公共键对应于:
NUM_ITEM
因此,将mongo.NUM_CONTROL与mysql.NUM_ITEM连接将为mongo提供唯一的记录键,而连接mysql.DOCNUM和mysql.LIN_NUM_ITEM将为mysql提供唯一的记录键。现在,这些计算出来的键可以用来左加入数组。使用下划线字符(或其他非数字字符,例如管道)作为分隔符,将确保匹配正确的记录(如果您拥有具有NUM_CONTROL = 1和NUM_ITEM = 11的mongo记录,以及具有DOCNUM = 11和LIN_NUM_ITEM =1的mysql记录,则如果没有分隔符,则mongo和mysql (111)的计算键值相同,它们将被错误地连接。使用分隔符,这将不会发生,因为mongo计算的键将是1_11和mysql计算的键11_1)。
https://stackoverflow.com/questions/64177443
复制相似问题