23.回顾

下边的查询展示了许多先前的概念融合在一起工作。

首先我们从从tutorial桶里查询出6个文档。注意UNNEST运算是很重要的一步是用于访问数组的嵌套内容通过加入其父级别,按照N1QL规格。这是查询中使用,以获得孩子的所有嵌套的元素。UNNEST运算是在第二节中描述。

  • WHERE子句可以消除10岁或更年轻的孩子。

  • 下一步通过 GROUP BY 分成三个组,每个结果为 (“friend”, “parent”, “cousin”)的其中一个关系

  • 然后HAVING会在分组过后删除parent组“”(因为parent只有1成员)。

  • 根据分组后的年龄平均值降序排

  • LIMIT 1 OFFSET 1跳过一个值,输出结果限制为一个

  • 最后SELECT字句(返回):显示分组标准(relation),组中的计数(count),以及小组成员的平均年龄(avg_age)

UNNEST简单理解就是将嵌套的元素,提到顶层元素字段,别将嵌套数组进行拆分,这样就可以想操作顶级字段操作聚合

比如:有一个人有两个孩子对children孩子字段进行UNNEST,则会拆分成两个数据,一个人包含一个孩子.

Query:

SELECT t.relation, COUNT(*) AS count, AVG(c.age) AS avg_age
    FROM tutorial t
    UNNEST t.children c
    WHERE c.age > 10
    GROUP BY t.relation
    HAVING COUNT(*) > 1
    ORDER BY avg_age DESC
    LIMIT 1 OFFSET 1

结果:

{
  "results": [
    {
      "avg_age": 17,
      "count": 2,
      "relation": "friend"
    }
  ]
}

Last updated

Was this helpful?