2016-02-25 70 views
3

我有一個簡單的圖表來跟蹤我借錢給的人。 使圖形看起來是這樣的:ArangoDB - 如何在圖遍歷中執行計算?

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

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

等等...

比方說,你需要找出每個用戶都欠了多少錢,用圖的遍歷。你如何實現這個?

回答

3

讓我用city example graph 對此進行解釋頂點(城市)有一個數字屬性​​;邊緣(高速公路)有一個數字屬性distance

檢查我們預計sumarize:

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來總結遍歷期間的屬性。

因此,儘管在城市和他們的距離的人口的情況下,可能沒有什麼意義,sumerize這些數字,讓我們這麼做了:對於快速和有益的反應再次

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} 
+0

非常感謝! :d –