sql >> Databasteknik >  >> RDS >> PostgreSQL

Ta bort nyckelvärdepar från jsonb kapslad array i postgresql

steg-för-steg-demo:db<>fiol

SELECT
    jsonb_object_agg(key, a)                                -- 5
FROM (
    SELECT
        mydata,
        key,
        jsonb_agg(a_elems.value - 'c') as a                   -- 3/4
    FROM
        mytable,
        jsonb_each(mydata) elems,                             -- 1
        jsonb_array_elements(elems.value) AS a_elems          -- 2
    GROUP BY mydata, key                                      -- 4
) s
GROUP BY mydata                                               -- 5
  1. Utöka JSON-elementen till en rad vardera. Detta genererar två kolumner:en för nyckeln och en för värdet (JSON-matrisen)
  2. Utöka JSON-matrisen till en rad vardera (som skiljer det aggregerade JSON-objektet från vilket du vill ta bort c element)
  3. Du kan använda - operatör för att ta bort elementet.
  4. För att återaggregera det ursprungliga JSON-objektet måste du gruppera det bakåt. jsonb_agg() återaggregerar arrayerna
  5. Slutligen måste du bygga om det ursprungliga JSON-objektet med jsonb_object_agg() med den tidigare genererade nyckelkolumnen och den nya arraykolumnen.



  1. Fjäderdata JPA endast en sammansatt nyckel är automatiskt inkrementerat problem

  2. sammankopplade med månader

  3. Bestäm vilka objekt som refererar till en tabell i SQL Server

  4. Strikt automatiskt öka värdet i MySQL