【问题标题】:ArangoDB - how to perform computations in graph traversals?ArangoDB - 如何在图遍历中执行计算?
【发布时间】:2016-02-25 23:29:12
【问题描述】:

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

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

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

等等……

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

【问题讨论】:

    标签: graph arangodb


    【解决方案1】:

    让我用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}
    

    【讨论】:

    • 再次非常感谢您的快速而有帮助的回复! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多