gpt4 book ai didi

postgresql - 从 postgresql 中的 jsonb 嵌套数组中删除键值对

转载 作者:行者123 更新时间:2023-11-29 13:07:54 25 4
gpt4 key购买 nike

我有 jsonb 数据作为

{
"a":[
{"b":1,"c":2,"d":3},
{"b":4,"c":5,"d":6}
],
"g":[
{"b":1,"c":2,"d":3},
{"b":4,"c":5,"d":6}
]
}

我想从“a”和“g”键的嵌套数组中删除 c 键。是否有一个查询来执行此操作?

最佳答案

step-by-step demo: db<>fiddle

SELECT
jsonb_object_agg(key, a) -- 5
FROM (
SELECT
mydata,
key,
jsonb_agg(a_elems.value - 'c') as a -- 3/4
FROM
mytable,
jsonb_each(mydata) elems, -- 1
jsonb_array_elements(elems.value) AS a_elems -- 2
GROUP BY mydata, key -- 4
) s
GROUP BY mydata -- 5
  1. 将 JSON 元素展开成一行。这将生成两列:一列用于键,一列用于值(JSON 数组)
  2. 将 JSON 数组扩展为一行(分隔要从中删除 c 元素的聚合 JSON 对象)
  3. 您可以使用 - 运算符删除元素。
  4. 要重新聚合原始 JSON 对象,您需要将其向后分组。 jsonb_agg() 重新聚合数组
  5. 最后,您需要使用先前生成的键列和新数组列,通过 jsonb_object_agg() 重建原始 JSON 对象。

关于postgresql - 从 postgresql 中的 jsonb 嵌套数组中删除键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58802312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com