Couchbase N1QL 查询 - 包含外部文档作为父文档
Couchbase N1QL Query - Include outer document as parent
我是 Couchbase 的新手,所以在下面的 n1ql 查询中需要一些帮助:
company:1
{
'companyName':'A',
'employees':[{
'empId':101,
'name':'Test',
'deptId':'dept:1'
},
{
'empId':102,
'name':'Test2',
'deptId':'dept:1'
}]
}
dept:1
{
'deptName':'Dept One',
'location':'First Floor'
}
我需要的输出如下:
company:1
{
'companyName':'A',
'departments':[{
'deptName':'Dept One',
'location':'First Floor'
'employees:[{
'empId':101,
'name':'Test',
'deptId':'dept:1'
},
{
'empId':102,
'name':'Test2',
'deptId':'dept:1'
}]
}],
}
我尝试使用 Unnest,然后使用子查询,但无法达到预期的结果。可能 NEST 可以提供帮助,但我不太清楚如何在 n1ql 中使用 NEST。
请帮助实现所需的输出。
首先您将员工拆开,然后按公司、部门分组。
其次你按公司分组
SELECT d1.companyName, ARRAY_AGG(OBJECT_ADD(dep,"employees", d1.employees)) AS departments
FROM ( SELECT d.companyName, e.deptId, ARRAY_AGG(e) AS employees
FROM default AS d
UNNEST d.employees AS e
WHERE d.type = "company"
GROUP BY d.companyName, e.deptId) AS d1
LET dep = (SELECT RAW d3 FROM default AS d3 USE KEYS d1.deptId)[0]
GROUP BY d1.companyName;
我是 Couchbase 的新手,所以在下面的 n1ql 查询中需要一些帮助:
company:1
{
'companyName':'A',
'employees':[{
'empId':101,
'name':'Test',
'deptId':'dept:1'
},
{
'empId':102,
'name':'Test2',
'deptId':'dept:1'
}]
}
dept:1
{
'deptName':'Dept One',
'location':'First Floor'
}
我需要的输出如下:
company:1
{
'companyName':'A',
'departments':[{
'deptName':'Dept One',
'location':'First Floor'
'employees:[{
'empId':101,
'name':'Test',
'deptId':'dept:1'
},
{
'empId':102,
'name':'Test2',
'deptId':'dept:1'
}]
}],
}
我尝试使用 Unnest,然后使用子查询,但无法达到预期的结果。可能 NEST 可以提供帮助,但我不太清楚如何在 n1ql 中使用 NEST。
请帮助实现所需的输出。
首先您将员工拆开,然后按公司、部门分组。 其次你按公司分组
SELECT d1.companyName, ARRAY_AGG(OBJECT_ADD(dep,"employees", d1.employees)) AS departments
FROM ( SELECT d.companyName, e.deptId, ARRAY_AGG(e) AS employees
FROM default AS d
UNNEST d.employees AS e
WHERE d.type = "company"
GROUP BY d.companyName, e.deptId) AS d1
LET dep = (SELECT RAW d3 FROM default AS d3 USE KEYS d1.deptId)[0]
GROUP BY d1.companyName;