在 PostgreSQL 中使用聚合函数合并许多 jsonb 对象?

tin*_*lyx 5 aggregate json postgresql-12

PostgreSQL 中是否有标准函数(从 12.x 开始)将数据库列中的许多 jsonb 对象连接或合并为单个 jsonb 对象?

我知道有一个|| 自 PostgreSQL 9.5 起合并两个jsonb 对象的运算符。但我需要从一列合并许多 jsonb 对象。除非我遗漏了什么,否则链接的文档似乎没有。

小智 5

我遇到了同样的问题,这篇文章解决了它:

https://blog.faraday.io/how-to-aggregate-jsonb-in-postgres/

这个想法是创建一个聚合:

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

有关更多详细信息,请参阅链接的文章。

  • 使用名称“jsonb_object_agg”是危险的,因为这也是内置聚合函数的名称 (4认同)