PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Изтрийте обекти в масиви NESTED JSONB с PostgreSQL

Бележка за редактиране:Не съм разбрал въпроса. Мислех, че искате да изтриете целия обект, съдържащ „RO“. Редактирах отговора така, че просто да изтрия идентификатора.

Има малка грешка в обекта jsonb, който предоставяте. Вероятно трябва да изглежда така:

{
    "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"
                }]
            }
        ]
    }
}

С това казано, това трябва да работи, но имайте предвид - това ще замени всички записи в работната таблица. Обектите jsonb са в полето "field".

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

Най-добри пожелания,
Бярни




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails:FATAL - Удостоверяването на партньора не бе успешно за потребител (PG::Error)

  2. Как да направя препратка към именувани параметри във функциите на Postgres sql?

  3. connection.select_value връща само низове в postgres с pg gem

  4. Намерете размера на байтовете на ред в PostgreSQL

  5. Postgres Alter Column Integer на Boolean