postgres/Sequelize:编辑 jsonb 数组中的对象,如果其属性的值匹配



我有一个数据库home,其中包含一个表room有一个存储jsonb数组的列appliances。它具有以下值:

[{
"name": "TV",
"uuid": "21"
},
{
"name": "Oven",
"uuid": "22"
}
]

现在,我想用uuid22编辑值并将其设置为{"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。

最新更新