Postgres查询记录JSONB字段中对象数组中的任何元素包含数字>或者< X

时间:2017-09-16 19:00:34

标签: arrays postgresql object compare jsonb

我一直在搜索,但这似乎是查询JSONB字段比常见的更独特的要求,还没有找到解决方案。 我的表有一个名为'plan'的jsonb字段,其内容如下所示:

{
    days: [
        {
            summary: {
                total: 100
            }
        }
    ]
}

days数组中可能存在无限日对象。是否可以运行一个查询,在至少一个日期对象中选择“total”大于或小于给定数字的所有行?

如果有必要,我可以重新排列表格或获取“摘要”数据并将其放在postgres数组字段中。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您可以在jsonb列total中获取plan的所有行,不等于101,如下所示:

SELECT *
FROM my_table t,
    LATERAL jsonb_array_elements(plan->'days') days
WHERE
    (days->'summary'->>'total')::integer != 101;