De truc om jsonb_set()
is dat het een deel van een jsonb
. wijzigt object, maar het retourneert het hele object. Dus je geeft het de huidige waarde van de kolom en het pad dat je wilt wijzigen ("pagina's" hier, als een stringarray), dan neem je de bestaande array (my_column->'pages'
) en voeg ||
. toe het nieuwe object ervoor. Alle andere delen van de jsonb
object blijven zoals het was. U wijst in feite een geheel nieuw object toe aan de kolom, maar dat is niet relevant omdat een UPDATE
schrijft toch een nieuwe rij naar de fysieke tabel.
UPDATE my_table
SET my_column = jsonb_set(my_column, '{pages}', my_column->'pages' || new_json, true);
De optionele create_missing
parameter ingesteld op true
hier voegt het object "pages" toe als het nog niet bestaat.