首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Postgres中提取JSON对象子集(>12)

如何在Postgres中提取JSON对象子集(>12)
EN

Database Administration用户
提问于 2021-09-29 06:52:39
回答 1查看 668关注 0票数 0

我有以下结构和查询:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT jsonb_path_query_array(jsonb '{"subscores": {"score_a": 2, "score_b": 3, "score_c": 4}}','$.subscores.* ? (@>2)');

返回:[3,4]

代码语言:javascript
代码运行次数:0
运行
复制
SELECT jsonb_path_query(jsonb '{"subscores": {"score_a": 2, "score_b": 3, "score_c": 4}}','$.subscores.* ? (@>2)');

返回(作为行):

代码语言:javascript
代码运行次数:0
运行
复制
3
4

是否有一种方法来构造我的查询,将对象子集作为单个行,单个字段值?即:

代码语言:javascript
代码运行次数:0
运行
复制
{"score_b": 3, "score_c": 4}

给出一组动态的分数.某些行将具有score_d, ...

EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-09-29 07:42:12

我认为您需要重新嵌套所有元素并将它们聚合回来:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT jsonb_object_agg(key, value) 
from (
  select *
  from jsonb_each(jsonb '{"subscores": {"score_a": 2, "score_b": 3, "score_c": 4}}' -> 'subscores')
) as p
where (p.value)::int > 2
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/300305

复制
相关文章

相似问题

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