PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Remova o par de valores-chave da matriz aninhada jsonb no postgresql


demonstração passo a passo: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. Expanda os elementos JSON em uma linha cada. Isso gera duas colunas:uma para a chave e outra para o valor (o array JSON)
  2. Expanda a matriz JSON em uma linha cada (que separa o objeto JSON agregado do qual você deseja remover o c elemento)
  3. Você pode usar o - operador para remover o elemento.
  4. Para reagregar o objeto JSON original, você precisa agrupá-lo para trás. jsonb_agg() reagrega os arrays
  5. Finalmente, você precisa reconstruir o objeto JSON original com jsonb_object_agg() usando a coluna de chave gerada anteriormente e a nova coluna de matriz.