我有一个简单的图表,用于跟踪我借钱给的人。 所以图表看起来像这样:
userB -- owes to (amount: 200) --> userA
userC -- owes to (amount: 150) --> userA
依旧......
假设您需要使用图表遍历来了解每个用户欠多少钱。你是如何实现这个的?
答案 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}