PostgreSQL | Как отфильтровать JSONB-массив объектов по логическому значению ключа?

PostgreSQL | Как отфильтровать JSONB-массив объектов по логическому значению ключа?

-- массив JSONB с объектами
select '[{"id":1, "q":true}, {"id":2, "q":false}, {"id":3, "q":true}, {"id":4, "q":false}]'::jsonb;
-- нужно оставить в массиве объекты где у ключа "q" значение "true"
select jsonb_path_query_array('[{"id":1, "q":true}, {"id":2, "q":false}, {"id":3, "q":true}, {"id":4, "q":false}]'::jsonb, '$[*] ? (@.q == true)');

Используем функцию «jsonb_path_query_array()«, которая умеет отбирать нужные объекты JSONB-массива по заданному нами условию.