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}
我有一个简单的图表来跟踪我借钱给的人。 所以图表看起来像这样:
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}