如何在Azure NiFi中使用JoltTransformJSON去除$oid属性
解决MongoDB $oid格式的Jolt转换问题
问题场景
从MongoDB获取的原始JSON结构:
{ "_id" : { "$oid" : "5bd761deae323e45a93cddae" } }
需要通过Azure NiFi的JoltTransformJSON处理器转换为:
{ "_id" : "5bd761deae323e45a93cddae" }
错误尝试的规则
之前使用的Jolt规则会触发java.lang.reflect.invocationtargetexception错误,且输出键名不符合需求:
[ { "operation": "shift", "spec": { "_id": { "$oid": "id" } } } ]
正确的Jolt转换规则
使用以下shift操作规则即可实现需求:
[ { "operation": "shift", "spec": { "_id": { "$oid": "_id" } } } ]
规则说明
shift操作负责重新映射JSON结构- 按嵌套层级匹配:先定位到
_id对象,提取其下的$oid值,将该值直接映射到根级的_id键,完成扁平化转换 - 该规则不会触发异常,同时严格保留目标结构中的
_id键名
批量处理扩展(可选)
如果需要批量处理所有包含$oid的字段(不止_id),可以使用通配符规则:
[ { "operation": "shift", "spec": { "*": { "$oid": "&1" } } } ]
这里&1表示引用父级的键名,实现所有带$oid的嵌套字段自动扁平化。
内容的提问来源于stack exchange,提问作者Se Hyun Park
相关产品推荐
相关产品推荐

