電報チャネルCrossthe Joinによると、リポジトリPostgresはKomichiに落ち、jsonbでの作業が簡単になりました。角かっこを使用してjsonbの一部にアクセスできるようになりました。これは、読み取りと書き込みの両方で機能します。
さようならjsonb_setと他の松葉杖のような data = data - 'a' || '{"a":5}'
いくつかの例:
キーでオブジェクトの値を更新します。25はここでは数値ですが、割り当てられた値はjsonbでなければならないため、引用符で囲みます
-- (person_data jsonb)
UPDATE users
SET person_data['age'] = '25';
この更新は、空の(null)jsonbでも機能します。
name = Pashaフィールドでテーブルをフィルタリングします。Pashaは文字列ですが、jsonb形式でも記述されています: '"Pasha"'、したがって余分な二重引用符
SELECT *
FROM users
WHERE person_data['name'] = '"Pasha"';
キー「age」でオブジェクトの値を取得します
SELECT ('{"age": 25}'::jsonb)['age'];
または、長いパスを指定できます
SELECT ('{"a": {"b": {"c": 1}}}'::jsonb)['a']['b']['c'];
インデックスによる配列要素
SELECT ('[1, "2", null]'::jsonb)[1];
最も重要なのは、変更がpostgreSQL14に含まれることです。
構文の元のアイデアは、実装であるOlegBartunovに属しています-DmitryDolgov