我在postgres表中有jsonb数据类型列“ payload”,其值如下:
{"testEvents": [
{
"id": 113068,
"name1": "test",
"count": 15
},
{
"id": 113069,
"name1": "test1",
"count": 15
}
]
}
现在,我想通过添加一个jsonobject来更新内部jsonarray。所以,我的结果将是
{"testEvents": [
{
"id": 113068,
"name1": "test",
"count": 15
},
{
"id": 113069,
"name1": "test1",
"count": 15
}
,
{
"id": 113070,
"name1": "test2",
"count": 18
}
]
}
我尝试了以下查询:
UPDATE table SET payload = payload ||'{"id":113070,"name1":"test2","count":18}';
但是它将替换先前的值。 由于是该主题的新手,所以任何人都可以通过正确的方法来提供帮助。
答案 0 :(得分:0)
jsonb_insert()
是您的职责
PM1 PM2 PM3 PM4 PM5 PM6
PM7 PM8 PM9 PM10 PM11 PM12
PM13 PM14 PM15 PM16 PM17 PM18
PM19 PM20 PM21 PM22 PM23 PM24
PM25 PM26 PM27 PM28 PM29 PM30
PM31 PM32 PM33 PM34 PM35 PM36
PM37 PM38 PM39 PM40 PM41 PM42
PM43 PM44 PM45 PM46 PM47 PM48
PM49 PM50 PM51 PM52 PM53 PM54
PM55 DPSI1 DPSI2 DPSI3 DPSI4 DPSI5
DPSI6 DPSI7 DPSI8 DPSI9 DPS10 DPSI11
DPSI12 DPSI13 DPSI14 DPSI15 DPS16 DPSI17
DPSI18 DPSI19 DPSI20 DPSI21 DPS22 DPSI23
DPSI24 DPSI25 DPSI26 DPSI27 DPS28 DPSI29
DPSI30 DPSI31 DPSI32 DPSI33 DPS34 DPSI35
DPSI36 DPSI37 DPSI38 DPSI39 DPS40 DPSI41
DPSI42 DPSI43 DPSI44 DPSI45 DPS46 DPSI47
DPSI48 DPSI49 DPSI50 DPSI51 DPS52 DPSI53
第二个参数定义必须在其中插入新元素的路径。 UPDATE mytable
SET jsondata =
jsonb_insert(jsondata, '{testEvents,0}', '{"id":113070, "name1":"test2","count":18}');
是第一位置。
答案 1 :(得分:0)
您需要将新值附加到数组(DoubleLinkedList
)上,而不是完整的JSON值。可以使用'testEvents'
jsonb_set()
部分update the_table
set payload = jsonb_set(payload, '{testEvents}', payload -> 'testEvents' || '{"id":113070,"name1":"test2","count":18}');
将新值附加到数组,然后payload -> 'testEvents' || '{"id":113070,"name1":"test2","count":18}'
用新数组替换jsonb_set
下的数组。