我正在使用Postges 9.4,我有一个表jsonb
字段作为对象数组。
以下是示例字段:
[{"pk": 224, "arbitrary_value": 50, "description": "United States"}, {"pk": 125, "arbitrary_value": 10, "description": "Canada"}]
在此数组字段中,有两个对象。但它是一个可变长度。
我有一个如下所示的查询:
select jsonb
, array_agg( ... )
from public.jsonb_data
在array_agg(...)
列中,我需要能够返回pk
字段的EACH对象中包含的jsonb
值数组。
结果集应如下所示:
| jsonb | array_agg |
| ----- | --------- |
| [{"pk": 224, "arbitrary_value": 50, "description": "United States"}, {"pk": 125, "arbitrary_value": 10, "description": "Canada"}] | {224,125} |
很抱歉,不知道如何在此编辑器中制作表格
我已经尝试过使用Postgres 9.4中提供的各种jsonb
运算符,但如果有人拥有它们,我想要任何指针。
答案 0 :(得分:3)
尤里卡!
我使用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} |
希望这有助于某人...