Couchbase N1QL查询-包括外部文档作为父文档

问题描述 投票:0回答:1

我是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。

请帮助获得所需的输出。

couchbase n1ql
1个回答
0
投票

[首先,您嵌套员工,然后按公司,部门分组。其次,您按公司分组]

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;
© www.soinside.com 2019 - 2024. All rights reserved.