Trik pro jsonb_set()
spočívá v tom, že upravuje část jsonb
objekt, ale vrátí celý objekt. Předáte mu tedy aktuální hodnotu sloupce a cestu, kterou chcete upravit (zde „stránky“, jako pole řetězců), pak vezmete stávající pole (my_column->'pages'
) a připojte ||
nový objekt k tomu. Všechny ostatní části jsonb
objekt zůstal tak, jak byl. Efektivně přiřazujete ke sloupci zcela nový objekt, ale to je irelevantní, protože UPDATE
stejně zapíše nový řádek do fyzické tabulky.
UPDATE my_table
SET my_column = jsonb_set(my_column, '{pages}', my_column->'pages' || new_json, true);
Volitelný create_missing
parametr nastaven na true
zde přidá objekt "pages", pokud již neexistuje.