У меня есть следующий JSON, который хранится в поле jsonb с именем «Данные» в базе данных PostgreSQL:
{
"CompetitionData" :
{
"StartDate" : "12.06.2018",
"Name" : "TestCompetition",
"Competitors" :
[
{
"Id" : "100",
"Name" : "John",
"Age" : "24",
"Score" : "98",
"Shoes":
{
"Brand" : "Nike"
}
},
{
"Id" : "200",
"Name" : "Adam",
"Age" : "32",
"Score" : "78",
"Shoes":
{
"Brand" : "Adidas"
}
}
]
}
}
Я пытаюсь получить конкретную запись в конкурентах, например, например.
SELECT * FROM Competitors WHERE Shoes = "Nike";
И результат должен выглядеть так:
{
"Id" : "100",
"Name" : "John",
"Age" : "24",
"Score" : "98",
"Shoes":
{
"Brand" : "Nike"
}
}
Я попробовал следующий запрос, но я продолжаю возвращать всех конкурентов:
SELECT jsonb_array_elements(public."Competitions"."Data"->'CompetitionData'->'Competitors') as test
FROM public."Competitions" WHERE public."Competitions"."Data" @> '{"CompetitionData":{"Competitors":[{"Shoes":{"Brand":"Nike"}}]}}';
Можно ли вернуть только конкурента с обувной маркой "Nike"?