gpt4 book ai didi

json - 如何遍历 jsonb 对象数组以获取对象 Postgres 中的键值

转载 作者:行者123 更新时间:2023-11-29 12:42:44 26 4
gpt4 key购买 nike

我使用的是 Postges 9.4,我有一个表,其中有一个 jsonb 字段作为对象数组。

这是一个示例字段:

[{"pk": 224, "arbitrary_value": 50, "description": "美国"}, {"pk": 125, "arbitrary_value": 10, "description": "加拿大"}]

在这个数组字段中,有两个对象。但它是可变长度的。

我有一个如下所示的查询:

select jsonb
, array_agg( ... )
from public.jsonb_data

array_agg(...) 列中,我需要能够返回包含在 jsonb 的每个对象中的 pk 值的数组 字段。

结果集应该是这样的:

| jsonb | array_agg |
| ----- | --------- |
| [{"pk": 224, "arbitrary_value": 50, "description": "United States"}, {"pk": 125, "arbitrary_value": 10, "description": "Canada"}] | {224,125} |

抱歉,不确定如何在此编辑器中制作表格...

我曾尝试使用 Postgres 9.4 中可用的各种 jsonb 运算符,但如果有人有的话,我希望得到任何指示。

最佳答案

Eureka !

我找到了,使用 jsonb_to_recordset() 函数。

这是我的查询:

select primary_key
, array_agg(e.pk)
from public.jsonb_data, jsonb_to_recordset(jsonb_field) as e( pk int )
group by primary_key
order by primary_key

然后这给了我一个完美的输出:

| Primary Key | jsonb_array |
| ----------- | ----------- |
| 1 | {224,152} |
| 2 | {224,186} |
| 3 | {224} |

希望这对某人有帮助...

关于json - 如何遍历 jsonb 对象数组以获取对象 Postgres 中的键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41354355/

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