我一直在搜索,但这似乎是查询JSONB字段比常见的更独特的要求,还没有找到解决方案。 我的表有一个名为'plan'的jsonb字段,其内容如下所示:
{
days: [
{
summary: {
total: 100
}
}
]
}
days数组中可能存在无限日对象。是否可以运行一个查询,在至少一个日期对象中选择“total”大于或小于给定数字的所有行?
如果有必要,我可以重新排列表格或获取“摘要”数据并将其放在postgres数组字段中。
答案 0 :(得分:1)
如果我正确理解了您的问题,您可以在jsonb列total
中获取plan
的所有行,不等于101,如下所示:
SELECT *
FROM my_table t,
LATERAL jsonb_array_elements(plan->'days') days
WHERE
(days->'summary'->>'total')::integer != 101;