jsonb
顧客IDの配列に対応するグループが見つかるという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"}'];
クエリに期待することは次のとおりです。
grp "最初"->顧客 "1"
grp "Third"->顧客 "5"