我是一个涉及 jsonb 请求的新手。
这个可以改进吗?集合是一个巨大的 jsonb 字段,也许一个交叉连接就足够了。
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;
以下是“元素”字段值的示例:
{
"sub": { "actions": [{"id":"1234", "name": "one"},{"id":"45678", name: 'two'}] }
}
该请求应返回一个操作,例如:
{"id":"1234", "name": "one"}
您可以使用 JSON 路径查询,从列的值中提取该元素:
在线示例