Tôi có một bảng để lưu trữ thông tin về những con thỏ của tôi. Nó trông như thế này:
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"]}');
Làm thế nào tôi nên tìm những con thỏ thích cà rốt? Tôi đã nghĩ ra điều này:
select info->>'name' from rabbits where exists (
select 1 from json_array_elements(info->'food') as food
where food::text = '"carrots"'
);
Tôi không thích truy vấn đó. Đó là một mớ hỗn độn.
Là một người nuôi thỏ toàn thời gian, tôi không có thời gian để thay đổi lược đồ cơ sở dữ liệu của mình. Tôi chỉ muốn cho thỏ ăn đúng cách. Có cách nào dễ đọc hơn để thực hiện truy vấn đó không?