Как поменять все елементы json массива которые подходят под условие в Postgres
У меня есть таблица в которой есть столбец c массивом структур к примеру:
{
"fields": [
{
"name": "name",
"type": "text",
},
{
"name": "ID",
"type": "string",
"value": "123",
},
{
"name": "description",
"type": "text",
"label": "Описание",
}
Я хочу добавить дополнительное поле value всем элементам которые соответствуют условию type = text
Я могу сделать такой запрос но он работает только если элемент будет один:
UPDATE table
SET payload = jsonb_set(payload,
('{fields, '||(SELECT position-1
FROM table, jsonb_array_elements(table.payload->'fields') with ordinality arr(elem, position)
WHERE name = 'testRow' AND (elem->>'type') = 'text')||', value}')::text[],
'"test value"'::jsonb, true)
WHERE name = 'testRow';
Вопрос в том как мне добавить дополнительное поле value ВСЕМ элементам которые соответствуют условию type = text