我正在执行类似于以下的查询:
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
被简单地跳过,然后遍历继续沿着该路径进行。查询支持v、e和p,其中p是它所采取的路径。
ArangoDB文档显示了一些示例。
我用它来排除指定深度路径中的特定节点,但您必须指定节点深度,例如p.vertices[0].something != 'value'
)。
另一件您可能想要查看的事情是使用“自定义访问者”函数,这些函数在查询沿着路径向下遍历时进行评估。
这篇好的博客文章和这个ArangoDB指南展示了一些实际的例子,值得阅读和努力使示例工作。我已经使用这些函数来总结路径中按路径上的顶点属性聚合的数据,但您也可以使用它来跟随自定义路径。
这很值得努力,因为在遍历图时它可以赋予你巨大的灵活性。你可以排除分支,仅包含符合特定要求的分支,或者聚合有关所经过路径的数据。