PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Supprimer la paire clé-valeur du tableau imbriqué jsonb dans postgresql

démo étape par étape :db<>violon

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. Développez les éléments JSON en une ligne chacun. Cela génère deux colonnes :une pour la clé et une pour la valeur (le tableau JSON)
  2. Développez le tableau JSON en une ligne chacun (qui sépare l'objet JSON agrégé dont vous souhaitez supprimer le c élément)
  3. Vous pouvez utiliser le - opérateur pour supprimer l'élément.
  4. Pour réagréger l'objet JSON d'origine, vous devez le regrouper en arrière. jsonb_agg() réagrège les tableaux
  5. Enfin, vous devez reconstruire l'objet JSON d'origine avec jsonb_object_agg() en utilisant la colonne de clé précédemment générée et la nouvelle colonne de tableau.