如何使用 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 输出文件名?

如何从 Pentaho xaction 输出 JSON?

Pentaho Kettle 中的“表存在”步骤

如何使用 Pentaho 中的 mongodb 删除步骤删除 mongodb 集合中的文档

pentaho 表格组件中的 css

Pentaho Kettle:如何动态获取 JSON 文件列