如何使用Pentaho从json中的三个表到mongodb执行复杂文档

时间:2016-01-05 14:54:08

标签: json mongodb pentaho kettle pentaho-spoon

我在一个数据库中有三个表。 这些表之间有一个外键。 表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中看到: enter image description here

如何使用Pentaho数据集成(PDI)来实现这一目标?

2 个答案:

答案 0 :(得分:3)

尝试添加修饰符选项“$ addToSet”

enter image description here

答案 1 :(得分:3)

要使用PDI步骤MONGODB OUTPUT插入Mongodb,诀窍在“Mongo文档路径”列中。将括号[]放在您想要数组的字段路径的末尾(请参阅下面屏幕截图中的data.labels[].id),并使用$set作为修改器操作。

如果您希望将数据放入特定数组,也可以使用指针。在字段路径末尾使用[n](请参阅下面屏幕截图中的tags[0]tags[1]tags[2]。请注意,第一个数组从0开始。

enter image description here