PDI Kettle - 如何在 MongoDB 输出中为查询匹配指定 ObjectId

Posted

技术标签:

【中文标题】PDI Kettle - 如何在 MongoDB 输出中为查询匹配指定 ObjectId【英文标题】:PDI Kettle - How to specify ObjectId for query match in MongoDB Output 【发布时间】:2016-12-05 13:32:04 【问题描述】:

使用 PDI Kettle MongoDB 输出,我正在尝试通过查询 _id (ObjectId) 字段来更新 mongodb 文档。 如果我将 _id 变量作为字符串传递给 MongoDB 输出步骤,则创建的最终查询看起来像

    Modifier update query:


  "_id" : "<string val>"

最终可能会变成类似

    Modifier update query:


  "_id" : "579c18b47f34b4330f85a981"

这可能导致查询未找到文档并且更新失败并出现错误“没有为修饰符更新操作指定要更新的字段!

有什么方法可以指定如下查询?

"_id" : ObjectId(579c18b47f34b4330f85a981)

还是我看到错误是因为其他原因?

请找到“mongo 文档字段”选项卡的屏幕截图。

【问题讨论】:

到目前为止,它通过传递 Shard Keys 而不是 _id 来工作。但是,如果我必须按 _id 进行搜索,我将如何使用 PDI Kettle - MongoDB 输出组件在查询中指定它? 【参考方案1】:

首先,您可以使用“javascript”步骤将“_id”值转换为 JSON 格式:

_id = ' "$oid": "' + _id + '" '

然后在“MongoDB 输出”步骤的最后一行中,您应该将 JSON 属性设置为 Y。

【讨论】:

以上是关于PDI Kettle - 如何在 MongoDB 输出中为查询匹配指定 ObjectId的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pentaho Kettle/PDI 将行列转换为行

PDI 学习2:KETTLE安装,环境变量配置,开发准备

Pentaho PDI/Kettle 从文本文件中读取多行

Pentaho/PDI/Kettle:如何用 Excel 电子表格中的值填充“插入/更新”?

Kettle - 负载均衡

PDI(Pentaho Kettle)Jar 文件的 Maven 依赖项