3

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

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

我期望发生的是,如果e.someConditionfalse,则不会遍历有问题的边缘(并且传递性地,e将永远不会访问所有其他只能通过它到达的顶点和边缘)。

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

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

4

1 回答 1

3

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

ArangoDB文档显示了一些示例。

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

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

这篇优秀的博客文章ArangoDB 指南展示了一些真实世界的示例,值得阅读并努力让示例正常工作。我已经使用这些函数来汇总路径中的数据,这些数据由路径中顶点的属性聚合,但您也可以使用它来遵循自定义路径。

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

我希望这会有所帮助。

于 2016-06-15T05:25:09.483 回答