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

Postgres में फ़िल्टर मानदंड के आधार पर गहराई से नेस्टेड JSON ऑब्जेक्ट को कैसे अपडेट करें?

यदि आप जावास्क्रिप्ट से परिचित हैं तो आपको JavaScript प्रक्रियात्मक भाषा plv8 को इंस्टॉल और उपयोग करने में खुशी होगी। यह एक्सटेंशन आपको json मानों को मूल रूप से संशोधित करने की अनुमति देता है, उदाहरण:

create extension if not exists plv8;

create or replace function update_mapping_v8(data json)
returns json language plv8 as $$
    var len = data['mapping'].length;
    for (var i = 0; i < len; i++) {
        var o = data['mapping'][i];
        if (o.src == 'up' && o.dest == 'down') {
            o.rule_names = 'some name'
        }
    }
    return data;
$$;

update mapping_transform
set content_json = update_mapping_v8(content_json);

MS Windows उपयोगकर्ताओं के लिए:विंडोज बायनेरिज़ स्थापित करने के लिए तैयार है।

एक plpgsql वैकल्पिक समाधान jsonb प्रकार का उपयोग करता है:

create or replace function update_mapping_plpgsql(data jsonb)
returns json language plpgsql as $$
declare
    r record;
begin
    for r in
        select value, ordinality- 1 as pos
        from jsonb_array_elements(data->'mapping') with ordinality
        where value->>'src' = 'up' and value->>'dest' = 'down'
    loop
        data = jsonb_set(
            data,
            array['mapping', r.pos::text],
            r.value || '{"rule_names": "some name"}'
            );
    end loop;
    return data;
end $$;

update mapping_transform
set content_json = update_mapping_plpgsql(content_json::jsonb);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेज में दो टेबल की तुलना कैसे करें

  2. Postgres 9.4 के लिए स्थायी रूप से समय क्षेत्र कैसे सेट करें

  3. पोस्टग्रेएसक्यूएल प्राथमिक कुंजी ऑटो वृद्धि सी ++ में दुर्घटनाग्रस्त हो जाती है

  4. टेक्स्ट से इंट में कैसे डालें यदि कॉलम में पोस्टग्रेएसक्यूएल में इंट और न्यूल दोनों मान हैं

  5. फ़ंक्शन से लौटाए गए रिकॉर्ड में कॉलम जुड़े हुए हैं