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

时间:2020-04-08 22:08:31

标签: sql json postgresql 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() < / strong>。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可以将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

Demo