sql >> Database teknologi >  >> RDS >> PostgreSQL

Fjern nøgleværdipar fra indlejret jsonb-array i postgresql

trin-for-trin demo:db<>fiddle

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. Udvid JSON-elementerne til en række hver. Dette genererer to kolonner:En for nøglen og en for værdien (JSON-arrayet)
  2. Udvid JSON-arrayet til én række hver (som adskiller det aggregerede JSON-objekt, hvorfra du vil fjerne c) element)
  3. Du kan bruge - operatør for at fjerne elementet.
  4. For at samle det originale JSON-objekt igen, skal du gruppere det baglæns. jsonb_agg() samler arrayerne igen
  5. Til sidst skal du genopbygge det originale JSON-objekt med jsonb_object_agg() ved at bruge den tidligere genererede nøglekolonne og den nye matrixkolonne.



  1. Hvordan indsætter man flere rækker fra array ved hjælp af CodeIgniter framework?

  2. Hvordan forsinker jeg kolonner i MySQL?

  3. Sådan bruger du jQuery SlickGrid med PHP / MySQL (indlæs serverdata og gem ændringer)

  4. Sådan bruges Zend Framework til at eksportere til CSV ved hjælp af mySQL's INTO OUTFILE-funktionalitet