栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何基于Postgres中的过滤条件更新深层嵌套的JSON对象?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何基于Postgres中的过滤条件更新深层嵌套的JSON对象?

如果您熟悉Javascript,将很乐意安装和使用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_transformset content_json = update_mapping_v8(content_json);

对于MS
Windows用户:准备安装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_transformset content_json = update_mapping_plpgsql(content_json::jsonb);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号