如何使用 Pentaho 从 json 中的三个表到 mongodb 执行复杂文档
Posted
技术标签:
【中文标题】如何使用 Pentaho 从 json 中的三个表到 mongodb 执行复杂文档【英文标题】:How to do complex document from three tables in json to mongodb using Pentaho 【发布时间】:2016-01-05 14:54:07 【问题描述】:我在一个数据库中有三个表。 这些表之间有一个外键。 表 1 是表 2 的主表,表 2 是表 3 的主表。
我想像这样在 MongoDB 文档中获取数据值和转换:
"_id" : ObjectId("cf3977abf592d19962ff7982"),
"T1Column1" : "Lorem Ipsum",
"T1Column2" : ISODate("2015-11-27T16:04:24.000Z"),
"Table2" : [
"T2Column1" : NumberLong(1),
"T2Column2" : "Lorem Ipsum",
"Table3" : [
"T3Column1" : "Lorem Ipsum",
"T3Column2" : "Lorem Ipsum"
,
"T3Column1" : "Lorem Ipsum",
"T3Column2" : "Lorem Ipsum"
]
,
"T2Column1" : NumberLong(2),
"T2Column2" : "Lorem Ipsum",
"Table3" : [
"T3Column1" : "Lorem Ipsum1",
"T3Column2" : "Lorem Ipsum"
,
"T3Column1" : "Lorem Ipsum2",
"T3Column2" : "Lorem Ipsum"
]
]
我已经尝试在 MongoDB 输出步骤中使用“Mongo 文档路径”,但不能对子文档使用“upsert”,正如我们在 MongoDB Ouput Document 中看到的那样:
如何使用 Pentaho 数据集成 (PDI) 来做到这一点?
【问题讨论】:
【参考方案1】:尝试添加修饰符选项“$addToSet”
【讨论】:
【参考方案2】:要使用 PDI 步骤 MONGODB OUTPUT 插入 Mongodb,诀窍在于“Mongo 文档路径”列。在你想要数组的字段路径的末尾放置一个括号[]
(参见下面的屏幕截图中的data.labels[].id
),并使用$set
作为修饰符操作。
如果你想把数据放到一个特定的数组中,你也可以使用指针。在字段路径的末尾使用[n]
(请参阅下面的屏幕截图中的tags[0]
、tags[1]
、tags[2]
)。请注意,第一个数组以 0 开头。
【讨论】:
以上是关于如何使用 Pentaho 从 json 中的三个表到 mongodb 执行复杂文档的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Pentaho 中将上一步中的字段设置为 JSON 输出文件名?