Arangodb AQL聚合函数语法

Arangodb AQL聚合函数语法,arangodb,Arangodb,像sum()这样的聚合函数的语法到底是什么 例如,采用以下结构: let json = { "ages": { "age": [ "20", "30", "40" ] } } 那 for age in json.ages.age return age 返回 ["20", "30", "40"] 以下所有代码段都返回Arango 2.0.4中调用函数“SUM()”时使用的“[1542]无效参数类型”: // LR let ages =

像sum()这样的聚合函数的语法到底是什么

例如,采用以下结构:

let json = {
    "ages": {
    "age": [
    "20",
    "30",
    "40"
    ]
    }
}

for age in json.ages.age return age
返回

 ["20", "30", "40"]
以下所有代码段都返回Arango 2.0.4中调用函数“SUM()”时使用的“[1542]无效参数类型”:

// LR
let ages = (for age in json.ages.age return age)
return sum(ages)

// LR
let ages = (
    for age in json.ages.age  
    return age
)
return sum((for age in json.ages.age return age))

// R
return sum((for age in json.ages.age return age))
正确的语法是什么

语法页()似乎没有任何相关示例

我能找到的最接近语法示例的东西是:

但它似乎有上面的语法,这对我来说是失败的


任何地方都有更详细的语法参考吗?

您的方法是正确的,但是您在文档中遗漏了一点。;)

在SUM()的文档中,它表示:

SUM(list):返回列表中的值之和。这要求列表中的元素是数字。忽略空值

(参考文件:)

注意“这要求列表中的元素是数字”

因此,JSON示例的列表中应该有数字,而不是字符串

let json = {
    "ages": {
    "age": [
        20,
        30,
        40
    ]
    }
}

let ages = (for age in json.ages.age return age)
return sum(ages)
将上述代码段复制并运行到AQL编辑器中应该会得到所需的结果:

[
  90
]
当然,您也可以保持json不变,并通过相应地更改AQL查询将字符串转换为数字:

let json = {
    "ages": {
    "age": [
        "20",
        "30",
        "40"
    ]
    }
}

let ages = (for age in json.ages.age return TO_NUMBER(age))
return sum(ages)

有道理。使用另一种类似的语言自动进行这种类型的转换,但我甚至没有注意到提取过程是引用数字。我想,森林是为了树木。多谢。
let json = {
    "ages": {
    "age": [
        "20",
        "30",
        "40"
    ]
    }
}

let ages = (for age in json.ages.age return TO_NUMBER(age))
return sum(ages)