因为我在我的图形数据库ArangoDB中有树结构,如下所示
ID为2699394的节点是此图形树的父节点。并且每个节点都分配了名为X的属性。我想知道父节点2699394的所有后代的x的总和,不包括其自身的属性x。例如,假设:
2699399 x value is = 5,
2699408 x value is = 3,
2699428 x value is = 2,
2699418 x value is = 5,
then parent node 2699394 sum of x should be = 5 + 3 + 2 + 5
= 15
所以答案是15。那么谁能用ArangoDBAQL查询一下这个计算呢?
为了找出没有后代的特定节点,我已经使用下面的查询,
`FOR v, e, p in 1..1000 OUTBOUND 'Person/1648954'
GRAPH 'Appes'
RETURN v.id`
提前感谢Mayank
1条答案
按热度按时间bn31dyow1#
假设子项链接到其父项,则数据可以如下所示:
要遍历子节点链,我们需要沿“入界”方向遍历(如果父节点指向子节点,则为“出界”方向):
在本例中,通过指定边集合 relations 来使用匿名图。您也可以使用命名图,如
GRAPH "yourGraph"
。从
nodes/2699394
开始,向下遍历到nodes/2699418
的边,并且到目前为止未改变地返回途中的每个节点。由于我们只对
x
属性感兴趣,因此可以将其更改为只返回该属性:RETURN v.x
-将返回[ 5, 3, 2, 5 ]
。除非我们指定IN 0..10
,否则将不包括起始顶点。在FOR循环中,我们不能访问所有的
x
值,一次只能访问一个。我们不能像RETURN SUM(v.x)
这样做。相反,我们需要将遍历的结果赋给一个变量,这使它成为一个子查询。然后我们可以将所有的数字相加,并返回结果值:如果要返回具有计算的
x
属性的开始节点,可以执行以下操作:结果会是这样的: