2017-04-04 56 views
0

我需要在阵列中更新元素,那么,当我在第一时间运行转换,阵列如果PROD数组中的元素接收右击号码。但如果我再次运行它,数组将接收到相同的元素Pentaho的SQL到的MongoDB - 阵列版本

例子:

在第一时间,我得到了下面的文档,这是正确的:

{ 
    "_id" : ObjectId("58e2c81f781a75592f69f8a5"), 
    "DDATA_ORC" : ISODate("2016-08-02T03:00:00.000Z"), 
    "SNUMORC" : "113239", 
    "PROD" : [ 
     { 
      "SPRODUTO" : "TONER HP CE411A CIANO (305A)" 
     } 
    ] 
} 

但是,如果我再次运行改造,PROD阵列将用相同的SPRODUTO更新:

{ 
    "_id" : ObjectId("58e2c81f781a75592f69f8a5"), 
    "DDATA_ORC" : ISODate("2016-08-02T03:00:00.000Z"), 
    "SNUMORC" : "113239", 
    "PROD" : [ 
     { 
      "SPRODUTO" : "TONER HP CE411A CIANO (305A)" 
     }, 
     { 
      "SPRODUTO" : "TONER HP CE411A CIANO (305A)" 
     } 
    ] 
} 

这是一个问题,因为我会得到的查询错误的结果。

即可以插件配置: Options TabDocument Path tab

我需要仅当它接收到更新数组或失去的项目。

在此先感谢

回答

0

我解决了这个问题。

如果任何人有这个问题,解决的办法是创建2个“MongoDB的输出”。在第一个输出,您需要设置阵列(阵列将被每一个更新查询sucessfuly运行时间重建)。我用一个虚拟的字段做了它。

First Output Document Fields

在第二个“MongoDB的输出”,你需要执行一推来填充数组。

Second Output Document Fields

在 “输出选项” 选项卡,你必须设置更新,以及的Upsert “修改更新”