概要
PostgreSQLのテーブルにてjson型の列の値へ、プロパティ追加や削除の操作をする際のメモ書きです。
対応方針
- プロパティの追加や更新を行う方法はPostgresql update json data propertyのstackoverflowの記事でいくつか紹介されています。PostgreSQLのバージョン9.5以上であれば、
||
演算子を使う方法がわかりやすい気がします。 - プロパティの削除を行う方法はPostgreSQL: Remove attribute from JSON columnのstackoverflowの記事でいくつか紹介されています。PostgreSQLのバージョン9.5以上であれば、
-
演算子を使う方法がわかりやすい気がします。
実装サンプル
テスト用に以下のテーブルを用意します。今回はjsonの列はjson型にしていますが、jsonb型でも構いません。
CREATE TABLE public.sample_table (
id int8 NOT NULL,
json_value json NOT null,
CONSTRAINT samle_table_pk PRIMARY KEY (id)
);
追加や更新を行う際は以下のようなSQLで実現できます、該当行の値にproperty2
のプロパティを追加もしくは更新する操作となります。なお、テーブルの列がjsonb型の場合はjsonbへのキャストは不要です。
update sample_table set json_value = json_value::jsonb || '{"property2":"value2"}' where id=1
削除を行う際は以下のようなSQLで実現できます、該当行からproperty2
のプロパティを削除する操作となります。なお、テーブルの列がjsonb型の場合はjsonbへのキャストは不要です。
update sample_table set json_value = json_value::jsonb - 'property2' where id=1