Return 行按数组中的 jsonb 对象过滤

Return rows filtering by jsonb object in array

我有一个名为 houses 的 table,它有两列 id 和一个名为 details 的 jsonb 列。 details 列具有以下结构:

[{ kind: "flat", price: 100 }, { kind: "circle", price: 10 }]

我想获取所有 houses,其中 details 列至少有一个对象,其中 kindflat

这是我试过的:

select *
FROM houses
WHERE "details"->>'kind' = 'flat'

您可以使用 jsonb_array_elements

select h.*  from houses h cross join lateral 
    jsonb_array_elements(details) as j
where j->>'kind' = 'flat'

Demo