如何在Azure DocumentDB上进行聚合(AVG,SUM,MAX等)?

时间:2017-03-31 14:48:37

标签: azure azure-cosmosdb

我正在尝试Azure DocumentDB及其documentation says aggregation is supported。实际上,我可以通过以下方式COUNT进行:

SELECT value COUNT(1) FROM c WHERE c.id = 'someid'

但是,如果我按照相同的语法进行其他类型的聚合,它似乎无法正常工作。

SELECT value MAX(value) FROM c WHERE c.id = 'someid'

给出错误。这与MIN相同。

看起来不支持聚合(即使文档另有说明)。或者有不同的方法吗?

1 个答案:

答案 0 :(得分:6)

要使MAX()生效,您需要在给定的属性上进行聚合。例如,如果您有一些带有range属性的文档:

{
  "id": "max1",
  "range": 50
}
{
  "id": "max2",
  "range": 20
}

您通过以下方式获取range的最大值:

SELECT MAX(c.range) from c

返回:

[
  {
    "$1": 50
  }
]

或者

SELECT VALUE MAX(c.range) from c

返回:

[
  50
]

注意:在您的问题的示例中,您使用的是c.valueVALUE是保留字,因此您需要引用c['value']。例如:

SELECT VALUE MAX(c['value']) from c