consulta jsonb com objetos aninhados em uma matriz
Estou usando o PostgreSQL 9.4 com uma tabelateams
contendo umjsonb
coluna denominadajson
. Estou procurando uma consulta onde possa obter todas as equipes que tenham os Jogadores3
, 4
e7
em sua variedade de jogadores.
A tabela contém duas linhas com os seguintesjson
dados:
Primeira linha:
{
"id": 1,
"name": "foobar",
"members": {
"coach": {
"id": 1,
"name": "A dude"
},
"players": [
{
"id": 2,
"name": "B dude"
},
{
"id": 3,
"name": "C dude"
},
{
"id": 4,
"name": "D dude"
},
{
"id": 6,
"name": "F dude"
},
{
"id": 7,
"name": "G dude"
}
]
}
}
segunda linha:
{
"id": 2,
"name": "bazbar",
"members": {
"coach": {
"id": 11,
"name": "A dude"
},
"players": [
{
"id": 3,
"name": "C dude"
},
{
"id": 5,
"name": "E dude"
},
{
"id": 6,
"name": "F dude"
},
{
"id": 7,
"name": "G dude"
},
{
"id": 8,
"name": "H dude"
}
]
}
}
Como deve ser a consulta para obter a lista desejada de equipes? Eu tentei uma consulta onde eu criaria uma matriz dos jogadores membrosjsonb_array_elements(json -> 'members' -> 'players')->'id'
e compará-los, mas tudo o que consegui realizar foi um resultado em que qualquer um dos IDs de jogadores comparados estava disponível em um time, nem todos.