You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PDI中MongoDB Input步骤如何用前序MySQL查询值执行$match筛选

PDI Table Input字段传递至MongoDB Input查询的实现方案

失效原因说明

你之前的写法不生效是因为两个核心问题:

  • ${PARAMETER} 语法仅适用于调用全局/作业级别的参数,无法直接读取前序步骤输出的流字段
  • 直接写 $ID_EXECUCAO 会被MongoDB的查询解析器识别为内置操作符,不会匹配你前序步骤传递的字段值

两种可行实现方案

方案1:单值场景(Table Input仅返回1条ID_EXECUCAO记录)

  • 在Table Input步骤后新增「设置变量」步骤,选择ID_EXECUCAO作为变量值来源,自定义变量名(例如GLOBAL_EXEC_ID),有效范围设置为「根作业」
  • 将MongoDB Input步骤放置在同一作业的后续转换中,查询写法调整为:
{
  $match: {
    "IdExecucao": ${GLOBAL_EXEC_ID}
  }
}

如果IdExecucao是字符串类型,需要给变量包裹引号,写成 "${GLOBAL_EXEC_ID}"

方案2:多值场景(Table Input返回多条ID_EXECUCAO记录,需逐条匹配)

  • 替换普通MongoDB Input步骤为「MongoDB Document Input」步骤,该组件原生支持流字段作为查询参数
  • 勾选步骤配置页的「使用字段替换查询中的?{}占位符」选项
  • 查询写法调整为:
{
  $match: {
    "IdExecucao": ?{ID_EXECUCAO}
  }
}

PDI会自动将前序流的ID_EXECUCAO字段值填充到占位符位置,无需额外配置。


注意事项

  • 不要在同一个转换内同时执行「设置变量」和「读取该变量」的操作:PDI的转换步骤会并行初始化,变量还未完成赋值就会被读取,导致空值
  • 数值类型的匹配不需要给占位符/变量包裹引号,字符串类型需要手动包裹引号(方案2除外,组件会自动处理类型格式)

内容的提问来源于stack exchange,提问作者Fernanda Andretto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:27:01