我有一个简单的图表来跟踪我借钱给的人。
所以图表看起来像这样:
userB -- owes to (amount: 200) --> userA
userC -- owes to (amount: 150) --> userA
等等...
假设您需要使用图形遍历来找出每个用户欠了多少钱。你如何实现这一点?
让我用城市示例图 https://docs.arangodb.com/Graphs/index.html#the-city-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 https://docs.arangodb.com/beta/AqlExamples/Grouping.html#aggregation遍历过程中总结属性。
因此,虽然在城市人口及其距离的背景下,对这些数字进行汇总可能没有意义,但无论如何我们都可以这样做:
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}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)