在postgresql中向jsonb追加新对象

ddrv8njm  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(404)

我试图在一个名为param的列中将新对象添加到我的表中,在该列中我有:

{"array1": [
    {"array2": [
        {"objId": 1, "data": false, "repeat": 1},
        {"objId": 2, "data": false, "repeat": 1}
    ]}
]}

我想将新对象添加到array2我正在使用该查询

UPDATE table
SET param = jsonb_set(
        param::jsonb,
        array['array1'],
        (param->'array1'->>'array2')::jsonb || jsonb_build_object('objId', '3','data', 'false','repeat', '1')::jsonb)
WHERE ...

但不是

{"array1": [
    {"array2": [
        {"objId": 1, "data": false, "repeat": 1},
        {"objId": 2, "data": false, "repeat": 1},
        {"objId": 3, "data": false, "repeat": 1}
    ]}
]}

我的参数变为空。有人能解决吗?
我的解决方案是基于这个主题的

pxyaymoc

pxyaymoc1#

试试这个:

select 
      jsonb_set(
                param::jsonb,
                '{array1,0,array2}',
                jsonb_extract_path(param, 'array1','0','array2')::jsonb ||
                jsonb_build_object('objId', '3','data', 'false','repeat', '1')::jsonb
               )

你可以根据你的要求写where条款

相关问题