demostración paso a paso: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
- Expanda los elementos JSON en una fila cada uno. Esto genera dos columnas:una para la clave y otra para el valor (la matriz JSON)
- Expanda la matriz JSON en una fila cada una (que separa el objeto JSON agregado del que desea eliminar la
c
elemento) - Puedes usar el
-
operador para eliminar el elemento. - Para volver a agregar el objeto JSON original, debe agruparlo al revés.
jsonb_agg()
reagrega las matrices - Finalmente necesitas reconstruir el objeto JSON original con
jsonb_object_agg()
utilizando la columna de clave generada anteriormente y la nueva columna de matriz.