我有一个数据库home
,其中包含一个表room
有一个存储jsonb数组的列appliances
。它具有以下值:
[{
"name": "TV",
"uuid": "21"
},
{
"name": "Oven",
"uuid": "22"
}
]
现在,我想用uuid
22
编辑值并将其设置为{"name":"Fridge","uuid":23}
.我该怎么做?解释jsonb_set等的答案都没有帮助我。它不一定是续集查询,我也对原始查询感到满意。
考虑到你的数据类型是jsonb[]和给定的数据集,你的问题的最简单的解决方案是array_replace
:
试试这个:
update room set appliances= array_replace(appliances,'{"name": "Oven","uuid": "22"}', '{"name": "Fridge","uuid": "23"}');
演示
无需jsonb_set
.它仅适用于 jsonb。