PostgreSQL JSON の部分的更新

JSON型データの一部の key value を更新する。

サンプルデータ、JSON列が、次のデータである時、

{"key": "E", "name": "orange", "ppp": "pst" }

追加や更新
|| で、マージする。

UPDATE jbooks SET 
jdata = jdata::jsonb || json_build_object(
        'key', 'D',
        'point', 14
        )::jsonb
WHERE id = 12

削除、
#- で、削除対象のキーを指定する。

UPDATE jbooks SET 
jdata = jdata #- '{ppp}'
WHERE id = 12

追加、更新、削除を一度にやる。
#- 演算子で、繋げる

UPDATE jbooks SET 
jdata = jdata::jsonb || json_build_object(
        'key', 'D',
         'point', 14
      )::jsonb
      #- '{ppp}'
WHERE id = 12

結果、こうなる

{"key": "D", "name": "orange", "point": 14  }