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

chh*_*yal 3 azure azure-cosmosdb

我正在尝试Azure DocumentDB,他们的文档说支持聚合.的确,我能做到COUNT:

SELECT value COUNT(1) FROM c WHERE c.id = 'someid'
Run Code Online (Sandbox Code Playgroud)

但是,如果我按照相同的语法来执行其他类型的聚合,则它似乎不起作用.

SELECT value MAX(value) FROM c WHERE c.id = 'someid'
Run Code Online (Sandbox Code Playgroud)

给出错误.这与MIN相同.

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

Dav*_*gon 6

为了MAX()工作,您需要在给定的属性上进行聚合.例如,如果您有一些带有range属性的文档:

{
  "id": "max1",
  "range": 50
}
{
  "id": "max2",
  "range": 20
}
Run Code Online (Sandbox Code Playgroud)

您将获得rangevia 的最大值:

SELECT MAX(c.range) from c
Run Code Online (Sandbox Code Playgroud)

哪个回报:

[
  {
    "$1": 50
  }
]
Run Code Online (Sandbox Code Playgroud)

要么

SELECT VALUE MAX(c.range) from c
Run Code Online (Sandbox Code Playgroud)

哪个回报:

[
  50
]
Run Code Online (Sandbox Code Playgroud)

注意:在您的问题示例中,您使用c.value.VALUE是一个保留字,所以你需要引用为c['value'].例如:

SELECT VALUE MAX(c['value']) from c
Run Code Online (Sandbox Code Playgroud)