2017-04-04 23 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 「修改更新」