У меня есть следующий JSON, хранящийся в столбце типа jsonb. Я хочу запросить второй элемент внешнего массива и фильтровать все строки, которые имеют значение в столбце 'cid' как 'CID1'.Фильтрация столбца PostgreSQL JSONB не работает
{"root":[[
{"cid":"CID1","Display":"User One","FName":"User","LName":"One"},
{"cid":"CID1","Display":"User Two","FName":"User","LName":"Two"},
{"cid":"CID1","Display":"User Three","FName":"User","LName":"Three"},
{"cid":"CID2","Display":"User One","FName":"User","LName":"One"},
{"cid":"CID2","Display":"User Two","FName":"User","LName":"Two"},
{"cid":"CID2","Display":"User Three","FName":"User","LName":"Three"}
],
[
{"cid":"CID1","Display":"User One","FName":"Userfff","LName":"One"},
{"cid":"CID1","Display":"User Two","FName":"User","LName":"Two"},
{"cid":"CID1","Display":"User Three","FName":"User","LName":"Three"},
{"cid":"CID2","Display":"User One","FName":"User","LName":"One"},
{"cid":"CID2","Display":"User Two","FName":"User","LName":"Two"},
{"cid":"CID2","Display":"User Three","FName":"User","LName":"Three"}
]]}
Я написал следующий запрос, и был успешным в получении всех строк из второго массива в качестве объектов JSON, однако, когда я пытаюсь фильтровать их я получаю ошибку
42703: колонка " filterin»не существует
select jsonb_array_elements((ARRAY(select jsonb_array_elements(msg->'root') ele))[2]::jsonb) filterin
from js
where filterin->>'cid'='CID1';
что я должен исправить в следующем запросе, так что я могу фильтровать по столбцам?
Работал отлично, спасибо @Sami – puneet
@Sami, как вы думаете, поставив индекс GIN на колонке jsonb будет лучше? – puneet