2016-08-31 51 views
1

我想從MongoDB導入數據到關係DB(SQL Server)。JSON導入與Talend關係表的嵌套對象

我無權訪問MongoDB組件,所以我使用mongo java驅動程序在tJava組件中查詢我的集合。

我得到一個:

名單< DBOBJECT>

我發送到tExtractJSONFields

我收藏的目的是這樣的:

[ 
 
    { 
 
     "_id":{ 
 
     "$oid":"1564t8re13e4ter86" 
 
     }, 
 
     "object":{ 
 
     "shop":"shop1", 
 
     "domain":"Divers", 
 
     "sell":[ 
 
      { 
 
       "location":{ 
 
        "zipCode":"58000", 
 
        "city":"NEVERS" 
 
       }, 
 
       "properties":{ 
 
        "description":"ddddd!!!!", 
 
        "id":"f1re67897116fre87" 
 
       }, 
 
       "employee":[ 
 
        { 
 
        "name":"employee1", 
 
        "id":"245975" 
 
        }, 
 
        { 
 
        "name":"employee2", 
 
        "id":"458624" 
 
        } 
 
       ], 
 
       "customer":{ 
 
        "name":"Customer1", 
 
        "custid":"test_réf" 
 
       } 
 
      } 
 
     ] 
 
     } 
 
    } 
 
]

對於出售,我可以有幾個員工。我有一組員工,我想將受影響的員工存儲在另一個表中。因此,我將有2個表:

Sell 
oid    | shop | domain | zipCode | ... 
1564t8re13e4ter86 | shop1 | Divers | 58000 | ... 


Affected employee 
employee_id | employee_name | oid 
245975  | employee1  | 1564t8re13e4ter86 
458624  | employee2  | 1564t8re13e4ter86 

所以我想環路員工陣列上,用Jsonpath查詢:

「$ [*] object.sell [0] .employee」

問題是,這樣做,我不能有object_id。看起來,如果我像這樣定義我的Jsonpath查詢,我無法在父節點上獲取屬性。

我也看到了,我可以像在下面的鏈接: http://techpoet.blogspot.ro/2014/06/dealing-with-nested-documents-in.html?utm_content=buffer02d59&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

但他什麼時候在較低水平得到OBJECT_ID我不明白。

我該怎麼辦?

+0

嗨,在我看來,Xpath可能是一個更好的選擇,因爲你可以有父節點使用Xpath(我認爲這是父點或雙點)。對象ID將重複每行,但你會擁有它。 –

+1

不幸的是,Xpath不適用於這個JSON。我不明白爲什麼,但我一直在嘗試所有類型的xpath查詢,但沒有取得任何成功... –

回答

0

我與JSONPath測試也失敗了,但我想這一定是在組件中的錯誤,因爲當我查詢:

$ .. [「$ OID」]我找回 - > []。

每當您嘗試獲取比循環查詢更高級別的節點時,似乎都會出現這種情況。