Фильтрация возвращаемых строк по объекту jsonb в массиве - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть таблица с именем houses, в которой есть два столбца id и столбец jsonb с именем details.Столбец details имеет следующую структуру:

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

Я хочу получить все столбцы houses, в которых details есть хотя бы один объект, где kind равен flat.

Вот что я пробовал:

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

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете использовать jsonb_array_elements

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

Демо

...