Я относительно новичок в postgres, и у меня проблема с манипулированием вложенными JSON массивами.
Моя JSON структура:
{
"rows":[
{
"columns":[
[
{
"text":"Some text",
"type":"report"
},
{
"type":"feedback"
}
],
[
{
"key":"p0",
"type":"publications",
"title":""
}
]
]
},
{
"columns":[
[
{
"key":"p1",
"type":"publication",
"title":""
}
]
]
}
]
}
Как видите, структура json немного избыточна, что делает ее еще более сложной. Моя цель состоит в том, чтобы просто добавить новый элемент заголовка в каждый вложенный столбец type="report"
(как уже есть для type="publication"
).
В настоящее время я перебираю массивы и пытаюсь восстановить измененный json структурировать снова через конкатенацию, но это утомительный и раздражающий процесс для этой простой задачи.
FOR currentColumn IN SELECT * FROM json_array_elements(extractedRows)
-- more for loops to get to the type="publication" elements
-- set the new title element
SELECT jsonb_set(...) into result;
-- finally reconstruct the json and persist it
END LOOP;
Есть ли умный способ сделать это более эффективно? Я прочитал документацию, но мне трудно найти лучший способ.