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

Postgresql dan jsonb - memasukkan kunci/nilai ke dalam array multi-level

Gunakan jsonb_array_elements untuk menghapus sarang semua elemen array dan kemudian menambahkan json yang diperlukan dan menggunakan jsonb_agg untuk menggabungkannya lagi:

with cte as
 (select id,
         jsonb_agg(jsonb_set(val1,
                             '{blocs}',
                             (select jsonb_agg(arr2 || '{"type": "regular"}')
                                from jsonb_array_elements(arr1.val1 - >
                                                          'blocs') arr2)))
    from challenge, 
         jsonb_array_elements(lines) arr1(val1)
   group by 1) 
update challenge 
   set lines = (cte.jsonb_agg) 
  from cte 
 where challenge.id = cte.id

DEMO




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Array agregat Postgresql

  2. Cara menggunakan array_agg() untuk varchar[]

  3. Laravel localhost berfungsi, tetapi heroku memberikan 500 kesalahan

  4. Manajemen Koneksi di PostgreSQL:Panduan

  5. Memperbaiki tabel TOAST yang rusak