यदि आप जावास्क्रिप्ट से परिचित हैं तो आपको 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);