sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man skjuter ett JSON-objekt till en kapslad array i en JSONB-kolumn

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.




  1. Hur man returnerar en lista över giltiga tidszoner i Oracle Database

  2. Tips för att trimma prestanda för PostgreSQL

  3. MySQL Group efter på varandra följande värden

  4. Anslut till flera databaser i CakePHP 3