ArangoDB - 如何在图遍历中执行计算?

ArangoDB - how to perform computations in graph traversals?

我有一个简单的图表来跟踪我借钱给的人。 所以图表看起来像这样:

userB -- owes to (amount: 200) --> userA

userC -- owes to (amount: 150) --> userA

等等...

假设您需要使用图形遍历找出每个用户欠多少钱。你是如何实现的?

让我用 city example graph 解释一下 顶点(城市)有一个数字属性,population;边(高速公路)具有数字属性 distance.

检查我们期望总结的内容:

FOR v, e IN 1..1 INBOUND "frenchCity/Lyon" GRAPH "routeplanner"
  RETURN {city: v, highway: e}

总结所有遍历城市的人口很容易:

RETURN SUM(FOR v IN 1..1 INBOUND "frenchCity/Lyon" GRAPH "routeplanner"
            RETURN v.population)

这里使用了子查询,即返回所有值,然后对它们执行SUM操作。

遍历时最好用COLLECT AGGREGATE总结属性

因此,虽然在城市人口及其距离的背景下,对这些数字进行汇总可能没有意义,但我们还是这样做吧:

FOR v, e IN 1..1 INBOUND "frenchCity/Lyon" GRAPH "routeplanner" 
  COLLECT AGGREGATE populationSum = SUM(v.population), distanceSum = SUM(e.distance)
    RETURN {population : populationSum, distances: distanceSum}