Saya memiliki meja untuk menyimpan informasi tentang kelinci saya. Ini terlihat seperti ini:
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"]}');
Bagaimana cara menemukan kelinci yang suka wortel? Saya datang dengan ini:
select info->>'name' from rabbits where exists (
select 1 from json_array_elements(info->'food') as food
where food::text = '"carrots"'
);
Saya tidak suka kueri itu. Ini berantakan.
Sebagai pemelihara kelinci penuh waktu, saya tidak punya waktu untuk mengubah skema database saya. Saya hanya ingin memberi makan kelinci saya dengan benar. Apakah ada cara yang lebih mudah dibaca untuk melakukan kueri itu?