PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Hapus objek di dalam array NESTED JSONB dengan PostgreSQL

Sunting catatan:Saya salah mengerti pertanyaannya. Pikir Anda ingin menghapus seluruh objek yang mengandung 'RO'. Saya mengedit jawabannya sehingga hanya untuk menghapus id.

Ada kesalahan kecil pada objek jsonb yang Anda berikan. Mungkin akan terlihat seperti ini:

{
    "x1": "Americas",
    "x2": "West",
    "x3": [{
        "x_id": "sam"
    }],
    "x4": {
        "a1": true,
        "a2": false,
        "a3": [
            "xx",
            "xx"
        ],
        "a4": [
            "Josh"
        ],
        "y1": [{
                "id": "RW",
                "z2": true,
                "z3": "USER",
                "z4": [{
                    "name": "john"
                }]
            },
             {
                "id": "RO",
                "z2": false,
                "z3": "SELECT",
                "z4": [{
                    "name": "salin"
                }]
            },
            {
                "id": "DBA",
                "z2": false,
                "z3": "SELECT",
                "z4": [{
                    "name": "Samule"
                }]
            }
        ]
    }
}

Dengan demikian, ini akan berfungsi, tetapi perlu diingat - ini akan menggantikan semua entri di tabel kerja. Objek jsonb berada di bidang "bidang".

with zd as (select ('{x4,y1,'||index-1||',id}')::text[] as path
            from table
            ,jsonb_array_elements((field->>'x4')::jsonb->'y1') 
            with ordinality arr(x,index)
            where x->>'id'='RO'
        )
        update table set field=
        field #- zd.path 
        from zd

Hormat kami,
Bjarni




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memantau PostgreSQL di Lingkungan Hibrida

  2. Mengisi WTForm SelectField secara dinamis dengan kueri sqlAlchemy

  3. temukan buku serupa berdasarkan buku yang dibeli berdasarkan kata kunci meta buku

  4. Tampilan Drop Postgresql

  5. Kolom teks Postgres yang hanya mengizinkan/mengubah menjadi huruf kecil dan tidak ada karakter khusus seperti:öáè