ArangoDB Graph-Traversal:排除边缘

时间:2016-06-14 10:40:40

标签: graph arangodb graph-traversal aql

我正在执行类似于以下的查询:

FOR v, e IN 1..10 ANY @start GRAPH @graph
    FILTER e.someCondition
    RETURN v

我期望发生的是,如果e.someConditionfalse,那么相关的边缘将不会被遍历(并且传递上,所有其他顶点和边缘仅可通过{{1}到达永远不会被访问过。)

然而,似乎发生的事情是e只是被跳过,然后遍历继续沿着这条路走。

那么,如何使用AQL通过边缘属性设置图遍历的边界?

1 个答案:

答案 0 :(得分:3)

查询支持v,e和p,其中p是它所采用的路径。

ArangoDB documentation显示了一些例子。

我用它来排除路径中指定深度的特定节点,但你必须指定节点的深度,例如p.vertices[0].something != 'value')。

您可能希望看到的另一件事是使用“自定义访问者”功能,这些功能在查询遍历路径时进行评估。

This good blog post这个ArangoDB guide显示了一些真实世界的例子,值得阅读并努力让样本正常运行。我已经使用这些函数来汇总路径中的数据,这些数据由路径中顶点的属性聚合,但您也可以使用它来跟随自定义路径。

这是值得的,因为它为您在遍历图表时所遵循的计算提供了极大的灵活性。您可以排除分支,仅包括满足特定要求的分支,或汇总有关所用路径的数据。

我希望有所帮助。