demo passo passo:db<>violino
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
- Espandi gli elementi JSON in una riga ciascuno. Questo genera due colonne:una per la chiave e una per il valore (l'array JSON)
- Espandi l'array JSON in una riga ciascuna (che separa l'oggetto JSON aggregato da cui desideri rimuovere il
c
elemento)
- Puoi usare il
-
operatore per rimuovere l'elemento.
- Per riaggregare l'oggetto JSON originale, devi raggrupparlo all'indietro.
jsonb_agg()
riaggrega gli array
- Infine devi ricostruire l'oggetto JSON originale con
jsonb_object_agg()
utilizzando la colonna chiave generata in precedenza e la nuova colonna dell'array.