Ho una tabella per memorizzare le informazioni sui miei conigli. Assomiglia a questo:
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"]}');
Come dovrei trovare i conigli a cui piacciono le carote? Ho pensato a questo:
select info->>'name' from rabbits where exists (
select 1 from json_array_elements(info->'food') as food
where food::text = '"carrots"'
);
Non mi piace quella domanda. È un disastro.
Come guardiano di conigli a tempo pieno, non ho tempo per cambiare lo schema del mio database. Voglio solo nutrire adeguatamente i miei conigli. Esiste un modo più leggibile per eseguire tale query?