首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在postgres中嵌套jsonb而不转换为jsonb[]

在postgres中嵌套jsonb而不转换为jsonb[]
EN

Stack Overflow用户
提问于 2022-03-02 14:03:30
回答 1查看 46关注 0票数 1

我有一个表,有两个列,一个是保存组号的索引,一个是jsonb数据列。

代码语言:javascript
复制
|      Index     |     payload    |
|----------------|----------------|
|       1        |     {jsonb}    |
|       1        |     {jsonb}    |
|       2        |     {jsonb}    |
|       2        |     {jsonb}    |

然后,我想将有效载荷嵌套到另一个jsonb中,但它不能是一个数组。

预期产出:

代码语言:javascript
复制
|      Index     |     payload    |
|----------------|----------------|
|       1        |{{jsonb},{jsonb}}|
|       2        |{{jsonb},{jsonb}}|

实际产出:

代码语言:javascript
复制
|      Index     |     payload    |
|----------------|----------------|
|       1        |[{{jsonb},{jsonb}}]|
|       2        |[{{jsonb},{jsonb}}]|


SELECT index, jsonb_agg(payload) as "payload"
FROM table1
GROUP BY 1
ORDER BY 1

如您所见,输出确实会将列聚合到jsonb中,但也会将其转换为数组。可以删除数组吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-02 14:19:40

您可以创建自己的聚合,只需追加JSONB值:

代码语言:javascript
复制
create aggregate jsonb_append_agg(jsonb) 
(
  sfunc = jsonb_concat(jsonb, jsonb),
  stype = jsonb
);

然后你就可以:

代码语言:javascript
复制
SELECT index, jsonb_append_agg(payload) as "payload"
FROM table1
GROUP BY 1
ORDER BY 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71324030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档