Postgres:跨行连接JSONB值?

Ala*_*air 1 postgresql jsonb

我正在掌握Postgres中的JSONB功能> = 9.5(并且喜欢它)但是遇到了绊脚石.我已经读过关于连接JSON字段的能力,所以'{"a":1}' || '{"b":2}'创建{"a":1,"b":2},但我想在多行的同一个字段中执行此操作.例如:

select row_concat_??(data) from table where field = 'value'
Run Code Online (Sandbox Code Playgroud)

我发现了jsonb_object_agg一个听起来像我想要的功能,除了文档显示它带有多个参数,而我只有一个.

有什么想法我会怎么做?jsonb_agg成功创建一个数组,感觉我真的很亲密.

Ala*_*air 7

在Postgres中使用自定义聚合后,我有以下内容:

DROP AGGREGATE IF EXISTS jsonb_merge(jsonb);

CREATE AGGREGATE jsonb_merge(jsonb) (
    SFUNC = jsonb_concat(jsonb, jsonb),
    STYPE = jsonb,
    INITCOND = '{}'
)
Run Code Online (Sandbox Code Playgroud)

然后可以用作:

SELECT group_id, jsonb_merge(data) FROM table GROUP BY group_id
Run Code Online (Sandbox Code Playgroud)