Tôi muốn viết một truy vấn đối với jsonbloạ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"