更新或删除嵌套jsonb对象中的值



我有两个场景正在尝试弄清楚。我在一个表中有一个jsonb列,其结构如下:

{
"1": {
"a": 0.084,
"b": 0.084,
"c": 0.084
},
"2": {
"a": 0.078,
"b": 0.0814,
"c": 0.078
},
"3": {
"a": 0.0928,
"b": 0.0975,
"c": 0.0975
}
}

如果我想更改"3"的值:{"b":}我该怎么做?我试着查看jsonb_set((之类的函数,但似乎每次我想更新一个值时都必须复制整个jsonb对象并重新粘贴它。

我想解决的第二个问题是,如果我想删除整个"3":{}对象,我能找到的唯一解决方案似乎是再次使用jsonb_set((

谢谢你的帮助!

您可以将jsonb_set()函数与相关路径'{3,b}'一起使用,以便update:

SELECT jsonb_set(jsonb_data, '{3,b}','0.1') 
FROM tab

其中0.1只是一个样本值

使用#-运算符进行delete:

SELECT jsonb_data #- '{3}'
FROM tab

演示

最新更新