首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用dataweave 2.0根据多个条件丰富一个JSON数组中的数据

使用dataweave 2.0根据多个条件丰富一个JSON数组中的数据
EN

Stack Overflow用户
提问于 2020-10-02 19:47:01
回答 1查看 344关注 0票数 0

最近,我问了this关于基于多个条件的过滤和合并两个JSON的问题。

但是,现在我需要mongo变量来丰富mysql变量数据。如果条件

代码语言:javascript
运行
复制
mongo.NUM_CONTROL = mysql.DOCNUM
mongo.NUM_ITEM = mysql.LIN_NUM_ITEM

不匹配,每个芒果元素保持不变。但是,如果它们匹配,则每个mongo元素都必须丰富mysql等效项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-02 20:13:25

您可以使用以下数据编织表达式:

代码语言:javascript
运行
复制
%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

  • mysql:
  • mongo: NUM_CONTROL和LIN_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)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64177443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档