У меня есть столбец jsonb data, содержащий дерево, например json, например:
{
"libraries":[
{
"books":[
{
"name":"mybook",
"type":"fiction"
},
{
"name":"yourbook",
"type":"comedy"
}
{
"name":"hisbook",
"type":"fiction"
}
]
}
]
}
Я хочу иметь возможность делать индекс, используя запрос, который выбирает значение из json-файла с отступом "book" в соответствии с типом. так что все названия книг - выдумка.
Я смог сделать это с помощью jsonb_array_elements запроса соединения, но, насколько я понимаю, это не будет оптимизировано с использованием индекса GIN. мой запрос
select books->'name'
from data,
jsonb_array_elements(data->'libraries') libraries,
jsonb_array_elements(libraries->'books') books,
where books->>'type'='grading'
json_extract_path
, который не обрабатывает записи с подстановочными знаками, совпадения шаблонов и т. Д., Пока нет. - person Craig Ringer   schedule 20.08.2015