Как добавить элемент в массив внутри поля jsonb? (PostgreSQL)
Есть поле с типом jsonb, внутри хранится объект:
{
"type1": [ "uuid1", "uuid2" ],
"type2": [ "uuid3" ]
}
В общем случае необходимо что бы при добавлении нового uuid4 в type1 мы получили
{
"type1": [ "uuid1", "uuid2", "uuid4" ],
"type2": [ "uuid3" ]
}
а при добавлении uuid5 в type3
{
"type1": [ "uuid1", "uuid2", "uuid4" ],
"type2": [ "uuid3" ],
"type3": [ "uuid5" ]
}
как по отдельности это сделать вопросов не возникает, проблема именно с написанием универсального адекватного запроса подходящего под оба кейса
Ответы (1 шт):
Автор решения: PenguiN560
→ Ссылка
UPDATE table1 SET
foo = jsonb_set(foo, '{type2}', COALESCE(foo->'type2', '[]') || '"uuid5"')
WHERE id = 'bar';