将键值对添加到Postgresql中的嵌套jsonb数组对象

时间:2019-11-14 23:18:38

标签: postgresql jsonb

我有两个临时表,其中my_data列为jsonb类型。表temp2有实际数据可以说

my_data = {
  "a": [
    {
      "b": "abc",
      "c": "def",
      "id": 1
    },
    {
      "b": "efg",
      "c": "ghi",
      "id": 2
    },
    {
      "b": "bmc",
      "c": "gmc",
      "id": 3
    }
  ],
  "d": [
    {
      "b": "xyz",
      "c": "amd",
      "id": 1
    },
    {
      "b": "bdf",
      "c": "klm",
      "id": 2
    },
    {
      "b": "bda",
      "c": "gdb",
      "id": 3
    }
  ]
}

表temp1具有

my_data ={
  "a": [
    {
      "b": "abc",
      "c": "def"
    },
    {
      "b": "efg",
      "c": "ghi"
    },
    {
      "b": "bmd",
      "c": "gmd"
    }
  ],
  "d": [
    {
      "b": "xyz",
      "c": "amd"
    },
    {
      "b": "bdf",
      "c": "klb"
    },
    {
      "b": "bda",
      "c": "gda"
    }
  ]
} 

现在,在比较嵌套数组对象中的键“ b”和“ c”后,我现在将temp2.​​my_data中的填充ID存在到temp1.my_data中。注意比较应该是索引在嵌套数组中的索引

temp1.my_data的最终结果为

{
  "a": [
    {
      "b": "abc",
      "c": "def",
      "id": 1
    },
    {
      "b": "efg",
      "c": "ghi",
      "id": 2
    },
    {
      "b": "bmd",
      "c": "gmd"
    }
  ],
  "d": [
    {
      "b": "xyz",
      "c": "amd",
      "id": 1
    },
    {
      "b": "bdf",
      "c": "klb"
    },
    {
      "b": "bda",
      "c": "gda"
    }
  ]
}

如何使用jsonb_set获得此结果?

0 个答案:

没有答案