Я пытаюсь проверить тип json
в PostgreSQL 9.3.
У меня есть столбец json
с именем data
в таблице с именем reports
. JSON выглядит примерно так:
{
"objects": [
{"src":"foo.png"},
{"src":"bar.png"}
],
"background":"background.png"
}
Я хотел бы запросить таблицу для всех отчетов, которые соответствуют значению 'src' в массиве 'objects'. Например, можно ли запросить в БД все отчеты, соответствующие 'src' = 'foo.png'
? Я успешно написал запрос, который может соответствовать "background"
:
SELECT data AS data FROM reports where data->>'background' = 'background.png'
Но так как "objects"
имеет массив значений, я не могу написать что-то, что работает. Можно ли запросить в БД все отчеты, соответствующие 'src' = 'foo.png'
? Я просмотрел эти источники, но до сих пор не могу понять:
- http://www.postgresql.org/docs/9.3/static/functions-json.html
- Как выполнить запрос с использованием полей внутри нового типа данных PostgreSQL JSON?
- http://michael.otacoo.com/postgresql-2/postgres-9-3-feature-highlight-json-operators/
Я также пробовал подобные вещи, но безрезультатно:
SELECT json_array_elements(data->'objects') AS data from reports
WHERE data->>'src' = 'foo.png';
Я не эксперт по SQL, поэтому я не знаю, что я делаю неправильно.