2

我正在使用最新的 postgres 9.3,它对 json 有很好的支持,并且还可以查询 json 字段中的特定键。但是我在更新 json 字段时遇到了问题。

基本上,我的 json 列是一个包含某些字段频率的字典,现在由于这些字段是动态的,我将它们放在一个 json 结构中。现在我在更新查询中遇到了麻烦,我只想添加该 json dict 的相应字段的频率。

所以,如果我有这样的东西 - {“a”:10,“b”:2},并且在更新传入项目时是{“a”:2,“c”:3},我的新行应该有{ “a”:12,“b”:2,“c”:3}

感谢你的帮助。

4

1 回答 1

1

您可以在 PostgreSQL 中执行以下操作:

update Test1 as t set
    data = (
        select
        ('{' || string_agg(a.data, ',') || '}')::json
        from (
            select '"' || a.key || '" :' || sum(a.value::int)::text as data
            from (
                select * from json_each_text(t.data)
                union all
                select * from json_each_text('{"a":2,"c":3}'::json) -- incoming
            ) as a
            group by a.key
       ) as a
   )

但可能更简单的方法是编写 Python(或其他 PL)函数。

于 2013-10-24T11:18:29.653 回答