Ano, to je možné:
SELECT *
FROM tbl t, json_array_elements(t.json_col->'emails') AS elem
WHERE elem->>'id' = 123;
tbl
jako název vaší tabulky json_col
což je název sloupce JSON.
Více podrobností v této související odpovědi:
- Jak mohu zadat dotaz pomocí polí v novém datovém typu PostgreSQL JSON?
Více o implicitním CROSS JOIN LATERAL
v posledním odstavci této související odpovědi:
- PostgreSQL unnest() s číslem prvku
Index pro podporu tohoto typu dotazu:
- Index pro nalezení prvku v poli JSON