例)
列名 jdata というJSONB列に以下の json データが入っているとする。
{ "fr": 11, "key": "E", "pub": "ara", "item": { "name": "orange", "group": { "x01": "AX193", "x02": "AX248", "c923": "A_982" }, "price": 231, "oprion": " " }, "point": 14 }
直下のキー "point" をJSONから取り除く。
- 演算子で削除できるのは、直下のkeyを指定する場合のみ
SELECT JSONB_PRETTY(jdata - 'point') as data2,
'point' key だけが削除される。
階層の深いところ、
jdata->'item'->'group'->'c923' を削除したい時は - 演算子ではなく、
#- 演算子でパスを { } で括ったカンマ区切りで指定する
SELECT JSONB_PRETTY(jdata #- '{item,group,c923}') as data3
data3 の結果は、
{ "fr": 11, "key": "E", "pub": "ara", "item": { "name": "orange", "group": { "x01": "AX193", "x02": "AX248" }, "price": 231, "oprion": " " }, "point": 14 }
元のjsonbデータの jdata->'item' から削除する場合は、
SELECT jsonb_pretty(jdata->'item' #- '{group,c923}') as data4
data4 の結果は、
{ "name": "orange", "group": { "x01": "AX193", "x02": "AX248" }, "price": 231, "oprion": " " }