PostgreSQL JSONB 抽出時に出力したくないキー、値を指定する

例)
列名 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": " "
}