Eu tenho uma mesa para armazenar informações sobre meus coelhos. Se parece com isso:
create table rabbits (rabbit_id bigserial primary key, info json not null);
insert into rabbits (info) values
('{"name":"Henry", "food":["lettuce","carrots"]}'),
('{"name":"Herald","food":["carrots","zucchini"]}'),
('{"name":"Helen", "food":["lettuce","cheese"]}');
Como devo encontrar os coelhos que gostam de cenouras? Eu vim com isso:
select info->>'name' from rabbits where exists (
select 1 from json_array_elements(info->'food') as food
where food::text = '"carrots"'
);
Eu não gosto dessa consulta. É uma bagunça.
Como tratador de coelhos em tempo integral, não tenho tempo para alterar meu esquema de banco de dados. Eu só quero alimentar meus coelhos adequadamente. Existe uma maneira mais legível de fazer essa consulta?