【问题标题】:Couchbase N1QL Query - Include outer document as parentCouchbase N1QL 查询 - 包括外部文档作为父级
【发布时间】:2020-03-04 12:37:09
【问题描述】:

我是 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】:

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

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-07
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多