如何在Apache NiFi中用JoltTransformJson复制_id到teamId字段
正确的Jolt配置方案
你之前的问题出在Jolt规则里不能直接使用NiFi的表达式语言${_id},Jolt有自己的字段引用语法。要引用根节点的_id,需要使用Jolt的相对路径引用语法@(2,_id),具体规则如下:
[ { "operation": "modify-overwrite-beta", "spec": { "team": { "*": { "teamId": "@(2,_id)" } } } } ]
语法说明
@(2,_id)中的2表示向上回溯2层路径:- 第一层:当前的数组元素(
team下的*) - 第二层:
team字段本身,再往上就是根节点,此时可以获取到根节点的_id字段值
- 第一层:当前的数组元素(
modify-overwrite-beta操作会覆盖每个team元素里原有的teamId值,正好匹配你的需求
转换后结果
执行上述规则后,输出的JSON会变成:
{ "_id": "gkpYcLowAADQiQiiX", "team": [ { "userId": "L2Q6Nd9Z7KhdXgeis", "role": "user", "teamId": "gkpYcLowAADQiQiiX" }, { "userId": "FFsDDYrTLJiCgW5iz", "role": "user", "teamId": "gkpYcLowAADQiQiiX" }, { "userId": "FzqcQEBjbT7TpxQbN", "role": "leader", "teamId": "gkpYcLowAADQiQiiX" } ] }
内容的提问来源于stack exchange,提问作者Nikolay Smelov
相关产品推荐
相关产品推荐

