ฉันต้องการเขียนแบบสอบถามกับjsonb
ประเภทใน Postgres ที่กำหนดอาร์เรย์รหัสลูกค้าจะพบกลุ่มที่เกี่ยวข้อง
รับตารางตัวอย่างนี้:
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"}]}');
ฉันพบคำถามที่คล้ายกัน ( PostgreSql JSONB SELECT เทียบกับหลายค่า ) และจัดการเพื่อให้ได้สิ่งที่ฉันต้องการในอาร์เรย์อย่างง่ายโดยใช้แบบสอบถามนี้:
SELECT d FROM grp WHERE d->'arr' ?| ARRAY['foo', 'bar'];
อย่างไรก็ตามฉันไม่สามารถใช้งานได้เมื่ออาร์เรย์มีวัตถุ JSON :
SELECT d FROM grp WHERE d->'customers' ?| ARRAY['{"id":"1"}', '{"id":"5"}'];
นี่คือสิ่งที่ฉันคาดหวังจากแบบสอบถามของฉัน:
กลุ่ม "แรก" -> ลูกค้า "1"
กลุ่ม "สาม" -> ลูกค้า "5"