Eu sou um novato no pedido envolvendo jsonb.
Este pode ser melhorado? collections é um campo jsonb enorme e talvez uma junção cruzada seja suficiente.
SELECT actions
FROM layouts
CROSS JOIN jsonb_array_elements(elements) AS element
CROSS JOIN jsonb_array_elements(element.value->'sub'->'actions') as actions
WHERE id = 124350001
AND actions->>'id' = '1234'
AND "deletedAt" IS NULL;
Aqui está um exemplo do valor do campo "elementos":
{
"sub": { "actions": [{"id":"1234", "name": "one"},{"id":"45678", name: 'two'}] }
}
A solicitação deve retornar uma ação, por exemplo:
{"id":"1234", "name": "one"}
Você pode usar uma consulta de caminho JSON para extrair esse elemento do valor da coluna:
Exemplo on-line