JSON使用Talend

时间:2016-08-31 08:28:03

标签: mongodb talend jsonpath

我正在尝试将数据从 MongoDB 导入关系数据库(SQL Server)。

我无法访问MongoDB组件,因此我在tJava组件中使用mongo java驱动程序查询我的集合。

我得到了:

  

列表与LT; 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查询循环使用employee数组:

  

" $ [*] 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。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

我使用JSONPath的测试也失败了,但我认为这必定是组件中的错误,因为当我查询时:

$ .. ['$ oid']我要回来了 - > []。

每当您尝试获得比循环查询更高级别的节点时,似乎就是这种情况。