📌

jsonbのTips

に公開

PostgreSQLのjsonbの操作を忘れてしまうので、ここに書いておく

json_set

pathで指定した箇所を、新たな値に置き換える

SQL

SELECT 
  jsonb_set(data, '{name}', '{"first":"suzuki","last":"taro"}'::jsonb)
FROM 
  sample;

元データ

{"name": "taro"}

結果

{"name": {"last": "taro", "first": "suzuki"}}

||

2つのjsonb値を結合する。

SQL

SELECT
  {"a": 1, "b": 2}::jsonb || {"b": "updated", "c": 3}::jsonb AS merged
sample;;

結果

{"a": 1, "b": "updated", "c": 3}

#-

指定したパスの要素を削除する。

SQL

SELECT
  data #- '{age}'
sample;

元データ

{"age": 25, "city": "Tokyo", "name": "Taro"}

結果

{"city": "Tokyo", "name": "Taro"}

Discussion