我正在执行类似于以下的查询:
FOR v, e IN 1..10 ANY @start GRAPH @graph
FILTER e.someCondition
RETURN v
我期望发生的是,如果e.someCondition
是false
,则不会遍历有问题的边缘(并且传递性地,e
将永远不会访问所有其他只能通过它到达的顶点和边缘)。
然而,似乎发生的e
只是被跳过,然后沿着这条路径继续遍历。
那么,如何使用 AQL 通过边缘属性设置图遍历的边界?
我正在执行类似于以下的查询:
FOR v, e IN 1..10 ANY @start GRAPH @graph
FILTER e.someCondition
RETURN v
我期望发生的是,如果e.someCondition
是false
,则不会遍历有问题的边缘(并且传递性地,e
将永远不会访问所有其他只能通过它到达的顶点和边缘)。
然而,似乎发生的e
只是被跳过,然后沿着这条路径继续遍历。
那么,如何使用 AQL 通过边缘属性设置图遍历的边界?
该查询支持 v、e 和 p,其中 p 是它所采用的路径。
ArangoDB文档显示了一些示例。
我已经使用它来排除路径中指定深度的特定节点,但您必须指定节点的深度,例如p.vertices[0].something != 'value'
)。
您可能想要查看的另一件事是使用“自定义访问者”函数,这些函数在查询遍历路径时进行评估。
这篇优秀的博客文章和ArangoDB 指南展示了一些真实世界的示例,值得阅读并努力让示例正常工作。我已经使用这些函数来汇总路径中的数据,这些数据由路径中顶点的属性聚合,但您也可以使用它来遵循自定义路径。
这是值得的,因为它为您在遍历图形时所遵循的计算提供了巨大的灵活性。您可以排除分支,仅包括满足特定要求的分支,或汇总有关其所走路径的数据。
我希望这会有所帮助。