5

我在一个数据库中有三个表。这些表之间有一个外键。表 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 输出文档中看到的那样: 在此处输入图像描述

我如何使用 Pentaho 数据集成 (PDI) 来做到这一点?

4

2 回答 2

3

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

在此处输入图像描述

于 2016-04-11T23:50:44.940 回答
3

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

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

在此处输入图像描述

于 2016-10-11T01:50:00.650 回答