проблемы с фильтрацией данных jsonb в postgresql - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь научиться фильтровать данные JSONB.Когда я запускаю:

SELECT DISTINCT jsonb_array_elements(data) 
FROM reports 
WHERE data @> '[{"status": "Active"}]'

Вместо того, чтобы возвращать только строки, где status: Active, кажется, игнорируется предложение WHERE, и я также возвращаю строки, содержащие status: Inactive

Ищем некоторыепомогите понять, что здесь происходит.

Данные выглядят как

[{"report": "Report1", "status": "Active"},
 {"report": "Report2", "status": "Inactive"},
 {"report": "Report3", "status": "Inactive"},
 {"report": "Report4", "status": "Active"}]

1 Ответ

0 голосов
/ 18 октября 2018
select * from reports
join lateral jsonb_array_elements(data) j(v)
on true
where
v->>'status' = 'Active'

здесь v - это элементы из массива jsonb, например, {"report": "Report1", "status": "Active"}

Затем отфильтруйте «статусные» ключи, где значение «Активно», используя оператор ->>

...