Tôi muốn viết một truy vấn đối với jsonb
loại trong Postgres đưa ra một mảng ID khách hàng sẽ tìm thấy các nhóm tương ứng.
Cho bảng ví dụ này:
CREATE TABLE grp(d JSONB NOT NULL);
INSERT INTO grp VALUES
('{"name":"First","arr":["foo"], "customers":[{"id":"1", "name":"one"},{"id":"2", "name":"two"}]}')
, ('{"name":"Second","arr":["foo","bar"], "customers":[{"id":"3", "name":"three"},{"id":"4", "name":"four"}]}')
, ('{"name":"Third","arr":["bar","baz"], "customers":[{"id":"5", "name":"five"},{"id":"6", "name":"seven"}]}');
Tôi đã tìm thấy câu hỏi tương tự ( PostgreSql JSONB CHỌN đối với nhiều giá trị ) và quản lý để đạt được những gì tôi muốn trên mảng đơn giản bằng truy vấn này:
SELECT d FROM grp WHERE d->'arr' ?| ARRAY['foo', 'bar'];
Tuy nhiên, tôi không thể làm cho nó hoạt động khi mảng chứa các đối tượng JSON :
SELECT d FROM grp WHERE d->'customers' ?| ARRAY['{"id":"1"}', '{"id":"5"}'];
Đây là những gì tôi mong đợi từ truy vấn của tôi:
grp "Đầu tiên" -> khách hàng "1"
grp "Thứ ba" -> khách hàng "5"