Ja, det är möjligt:
SELECT *
FROM tbl t, json_array_elements(t.json_col->'emails') AS elem
WHERE elem->>'id' = 123;
tbl
är ditt tabellnamn, json_col
är namnet på JSON-kolumnen.
Mer information i detta relaterade svar:
- Hur frågar jag med fält i den nya PostgreSQL JSON-datatypen?
Mer om den implicita CROSS JOIN LATERAL
i sista stycket i detta relaterade svar:
- PostgreSQL unnest() med elementnummer
Index för att stödja denna typ av fråga:
- Index för att hitta ett element i en JSON-array