Да, това е възможно:
SELECT *
FROM tbl t, json_array_elements(t.json_col->'emails') AS elem
WHERE elem->>'id' = 123;
tbl
е името на вашата таблица, json_col
е името на колоната JSON.
Повече подробности в този свързан отговор:
- Как да направя заявка с помощта на полета в новия PostgreSQL JSON тип данни?
Повече за имплицитното CROSS JOIN LATERAL
в последния параграф на този свързан отговор:
- PostgreSQL unnest() с номер на елемент
Индекс за поддръжка на този вид заявка:
- Индекс за намиране на елемент в JSON масив