Tricket till jsonb_set()
är att den modifierar en del av en jsonb
objekt, men det returnerar hela objektet. Så du skickar det aktuella värdet för kolumnen och sökvägen du vill ändra ("sidor" här, som en strängmatris), sedan tar du den befintliga matrisen (my_column->'pages'
) och lägg till ||
det nya objektet till det. Alla andra delar av jsonb
föremål förblir som de var. Du tilldelar faktiskt ett helt nytt objekt till kolumnen men det är irrelevant eftersom en UPDATE
skriver en ny rad till den fysiska tabellen ändå.
UPDATE my_table
SET my_column = jsonb_set(my_column, '{pages}', my_column->'pages' || new_json, true);
Den valfria create_missing
parameter satt till true
här lägger till "pages"-objektet om det inte redan finns.