Ich möchte eine Abfrage gegen jsonb
Typ in Postgres schreiben , die bei einem Array von Kunden-IDs entsprechende Gruppen findet.
Angesichts dieser Beispieltabelle:
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"}]}');
Ich fand ähnliche Frage ( PostgreSql JSONB SELECT gegen mehrere Werte ) und schaffte es, mit dieser Abfrage zu erreichen, was ich auf einem einfachen Array will:
SELECT d FROM grp WHERE d->'arr' ?| ARRAY['foo', 'bar'];
Ich kann es jedoch nicht zum Laufen bringen, wenn das Array JSON- Objekte enthält :
SELECT d FROM grp WHERE d->'customers' ?| ARRAY['{"id":"1"}', '{"id":"5"}'];
Folgendes erwarte ich von meiner Anfrage:
Gruppe "First" -> Kunde "1"
Gruppe "Dritter" -> Kunde "5"
quelle