我有如下所示的示例数据,我想提取仅具有名称及其完整键而不是 dep_names 及其完整键的元素。
我正在尝试如下所示,
WITH dataset AS
(
SELECT '{"name": "Bob Smith",
"org": "engineering",
"projects": [{"dep_namename":"project1", "completed":false},{"name":"project2", "completed":false},{"name":"project3", "completed":true}]}'
AS myblob
)
SELECT filter(json_query(myblob, 'lax $.projects[*]' with array wrapper),x -> x like '%name%') AS project_name
FROM dataset
我期待如下的输出
[{"name":"project2", "completed":false},{
“名称”:“项目3”,“已完成”:true}]
尝试直接在查询中使用
exists
过滤器:
SELECT json_query(myblob, 'lax $.projects[*]?(exists(@.name))' with array wrapper) AS project_name
FROM dataset;
输出:
project_name
------------------------------------------------------------------------------
[{"name":"project2","completed":false},{"name":"project3","completed":true}]
(1 row)