Как добавить элемент в массив внутри поля 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';
→ Ссылка