Tricket til jsonb_set()
er, at den ændrer en del af en jsonb
objekt, men det returnerer hele objektet. Så du giver den den aktuelle værdi af kolonnen og stien, du vil ændre ("sider" her, som en streng-array), så tager du den eksisterende matrix (my_column->'pages'
) og tilføj ||
det nye objekt til det. Alle andre dele af jsonb
objekter forbliver, som de var. Du tildeler effektivt et helt nyt objekt til kolonnen, men det er irrelevant, fordi en UPDATE
skriver alligevel en ny række til den fysiske tabel.
UPDATE my_table
SET my_column = jsonb_set(my_column, '{pages}', my_column->'pages' || new_json, true);
Den valgfrie create_missing
parameter sat til true
her tilføjer "pages"-objektet, hvis det ikke allerede eksisterer.