Postgresql:将对象附加到列表

Postgresql: Append object to a list

我有一个数据,其键为字符串,值是 json 的列表,看起来像

ID|data
A1|{key1:[{k1:v1,k2:v2},{{k3:v3,k4:v4}]}

我想为 key1 添加 json,比如说 {k9:v9,k7:v6},比如-

ID|data
A1|{key1:[{k1:v1,k2:v2},{{k3:v3,k4:v4},{k9:v9,k7:v6}]}

我已经尝试了jsonb_set和其他功能,但它们没有用,示例-

UPDATE tbl_name
SET data = jsonb_set(data,'{key1,1}','{k9:v9,k7:v6}'::jsonb) where ID = 'A1'

您需要使用 jsonb_insert() 函数来附加该部分,在修复 JSONB 值的格式后(否则您会得到“错误:输入语法无效对于类型 json" ) :

UPDATE tbl_name
   SET data = jsonb_insert(data,'{key1,1}','{"k9":"v9","k7":"v6"}'::jsonb) 
 WHERE ID = 'A1'

Demo