PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL के साथ नेस्टेड JSONB सरणियों के अंदर की वस्तुओं को हटाएं

नोट संपादित करें:मैंने प्रश्न को गलत समझा। सोचा था कि आप 'आरओ' वाली पूरी वस्तु को हटाना चाहते हैं। मैंने सिर्फ आईडी को हटाने के लिए उत्तर संपादित किया।

आपके द्वारा प्रदान किए गए 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 ऑब्जेक्ट "फ़ील्ड" फ़ील्ड में हैं।

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. Postgres या CouchDB में पूर्ण-पाठ खोज?

  2. PSQL में DECIMAL और NUMERIC डेटाटाइप के बीच अंतर

  3. psql:FATAL:भूमिका पोस्टग्रेज मौजूद नहीं है (-h लोकलहोस्ट विकल्प के साथ)

  4. कॉलम पोस्टग्रेज फ़ंक्शन के लिए डिफ़ॉल्ट मान तर्क के साथ

  5. PGPool II के विरुद्ध जावा क्वेरीज़ के कारण अज्ञात तैयार कथन त्रुटियाँ मौजूद नहीं हैं