根据https://www.arangodb.com/2014/07/13/arangodb-2-2-0-released,应可以使用如下语句:
LET sum = 0
FOR v IN values
SORT v.year
LET sum = sum + v.value
RETURN { year: v.year, value: v.value, sum: sum }
我目前使用的是2.4版,但无法使用,例如在以下声明中:
LET sum = 0
FOR i in memoryColl
LET sum = sum + 1
// sum = sum + 1
RETURN { "i": i, "sum": sum }
我得到了错误[1511]变量'sum'被分配了多次(解析时)
谁能告诉我这样的说法原则上是否可行,以及具体如何可行?
2条答案
按热度按时间mu0hgdu01#
正如2.3的升级文档中所解释的,不再可能更新查询中的变量:
以前版本的ArangoDB允许修改AQL查询中的变量[...]
虽然这是公认的方便特性,但新的查询优化器设计不允许保留它。
此外,更新查询内的变量会阻止我们希望优化程序对查询进行的大量优化。此外,更新在集群中的不同节点上运行的查询中的变量会导致不确定性行为,因为查询不是线性执行的。
要枚举文档,您可以执行以下操作
但我觉得这不是个好主意,最好把文件还回去,让客户来列举。
如果实际上要计算文档数,可以使用子查询:
在2.4中,还可以更有效地计数:
http://jsteemann.github.io/blog/2014/12/12/aql-improvements-for-24/
4sup72z82#
在2020年的arango3.7上,你可以做一些类似这里描述的事情
这一回