JSON中的Postgres查询数组元素?

时间:2019-09-20 13:35:45

标签: postgresql

我有一个称为fb_designs的Postgres 11表,该表具有一个json列,其数据结构如下:

{
    "listings": [
       {
            "id": "KTyneMdrAhAEKyC9Aylf",
            "active": true
        },
        {
            "id": "ZcjK9M4tuwhWWdK8WcfX",
            "active": false
        }
    ]
}

tags格式的character varying[]列的{dWLaRWChaThFPH6b3BpA,BrYiPaUiou020hsmRugR}列。两种长度都不确定。

我想做的是产生一些查询,让我用外行的话说

  

向我显示所有项目的所有结果。   活动状态和标签包含BrYiPaUiou020hsmRugR

我已经走了这么远,但是我不确定如何添加WHERE uid = "foo"WHERE tags contains "foo", "barWHERE title is like %hoot%

SELECT id, title, tags, selected_preview_image, items
FROM  fb_designs r, json_array_elements(r.items#>'{listings}') obj 
WHERE  obj->>'active' = 'true' 
GROUP BY id

1 个答案:

答案 0 :(得分:-1)

如果全部为真,则都不为假。听起来您想否定false否定遏制操作。

select * from fb_designs where 
    not items::jsonb @> '{"listings":[{"active": false}]}'
    and tags && ARRAY['BrYiPaUiou020hsmRugR']::varchar[]