Arangodb 从节点到叶的AQL路径

Arangodb 从节点到叶的AQL路径,arangodb,aql,graph-traversal,Arangodb,Aql,Graph Traversal,我是阿兰戈的新手,我正在努力理解写一些查询的“正确”方式。我读了()和(),因为它们总是在搜索我要做的事情时弹出。特别是,我有一个图,其中一个给定节点有一条从该节点到一片叶子的路径(通过某种“类型”的边)。类似于x-a->y-a->z。其中a为边类型,x、y、z为节点。这些路径可以是任意长度。我想编写一个AQL查询,返回从起始节点到叶节点的单个“最长”路径。我发现我总是得到每个子路径,然后必须进行一些后处理。traversal对象似乎为这个问题提供了一个解决方案,但现在它们似乎已被弃用。在AQL

我是阿兰戈的新手,我正在努力理解写一些查询的“正确”方式。我读了()和(),因为它们总是在搜索我要做的事情时弹出。特别是,我有一个图,其中一个给定节点有一条从该节点到一片叶子的路径(通过某种“类型”的边)。类似于x-a->y-a->z。其中a为边类型,x、y、z为节点。这些路径可以是任意长度。我想编写一个AQL查询,返回从起始节点到叶节点的单个“最长”路径。我发现我总是得到每个子路径,然后必须进行一些后处理。traversal对象似乎为这个问题提供了一个解决方案,但现在它们似乎已被弃用。在AQL中有没有正确的方法来做到这一点?是否有一份文件显示了如何做steemann在文章中所做的事情,但只使用AQL?除了arangodb网站上的内容(我已经阅读了所有这些内容,包括图形演示和我的课程)之外,还有一些关于图形查询的优秀AQL文档吗?如果没有,我很乐意写一些东西与社区分享,但我自己还不知道如何做到这一点,所以我需要一些材料,可以让我开始。长话短说,我只想知道如何运行查询来查找从节点到叶的路径。然而,一旦我了解了在没有遍历对象的情况下应该如何做,我将很乐意为您做出贡献。感谢您的帮助

出站
方向的遍历为例,您可以使用depth=1进行第二次遍历,以检查是否到达叶节点(没有更多传入边)。 基于此信息,可以筛选出“短”路径

请注意,需要第二个条件: 如果超过最大遍历深度,则遍历中的最后一个节点可能不是叶节点。 因此,还需要让路径通过,路径包含的边与遍历中的跳数一样多(此处:5)

交叉柱

LET maxDepth = 5
FOR v, e, p IN 1..maxDepth OUTBOUND "verts/s" edges
  LET next = (
    FOR vv, ee IN OUTBOUND v edges
      //FILTER ee != e // needed if traversing edges in ANY direction
      LIMIT 1 // optimization, no need to check for more than a single neighbor
      RETURN true // using a constant here, which is not actually used
  )
  FILTER LENGTH(next) == 0 || LENGTH(p.edges) == maxDepth
  RETURN CONCAT_SEPARATOR(" -> ", p.vertices[*]._key)