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

时间:2016-02-25 23:29:13

标签: graph arangodb

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

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

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

依旧......

假设您需要使用图表遍历来了解每个用户欠多少钱。你是如何实现这个的?

1 个答案:

答案 0 :(得分:3)

让我用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}
相关问题