Обновить или удалить значение во вложенном объекте jsonb - PullRequest
1 голос
/ 09 апреля 2020

У меня есть два сценария ios, которые я пытаюсь выяснить. У меня есть столбец 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»:} как бы я go сделал это? ? Я попытался посмотреть на такие функции, как jsonb_set () , но мне казалось, что мне придется копировать весь объект jsonb и вставлять его заново каждый раз, когда я хочу обновить одно значение.

Вторая проблема, которую я хочу решить, - это если я хочу удалить весь объект «3»: {}, единственное решение, которое я могу найти, это использовать jsonb_set () снова.

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 09 апреля 2020

Вы можете использовать функцию 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

Демо

...