Меняем элементы в массиве json postgres sql
Пример изменения элементов в массиве postgres json⌗
-------------------------------------------------
with edited as (
select
-- здесь 1337 это новое значение для sample_id
t1.id as sample_id,
-- 2. замена sample_id
jsonb_set( t1.arr_element, '{"sample_id}', '1337', false) as data
from (
select
d2.id as id,
-- 1. разворачиваем массив
jsonb_array_elements(d2.data) as arr_element
from
public."sample_table" d2
-- некий фильтр
-- where
-- d2.some_field = 12345
) t1
order by t1.id
),
-- 3. сворачиваем обратно
aggregated as (
select
sample_id,
jsonb_agg(data) as data_edited
from
edited
group by edited.sample_id
)
-- 4. апдейт
update
public."sample_table"
set
data = jsonb_set(data, '{"sample_id"}', a.data_edited, false)
from
aggregated a
where
id = a.sample_id
returning *
-----------------------------------------------------
Может быть потом опишу подробнее
Читать другие посты