找到两个顶点之间的所有路径

时间:2017-01-24 20:44:03

标签: arangodb

如何在arangodb 3.1中获得深度为n的两个顶点之间的所有路径? 我在AQL文档中找到的唯一可能性是最短路径。但是我希望获得所有路径,而不仅仅是最短路径。

感谢您的帮助!

1 个答案:

答案 0 :(得分:7)

为了获得具有已知n值的顶点之间具有正好长度_id的所有路径,您可以使用以下AQL语句:

FOR target, unused, path IN @depth ANY @source edgeCollection
  FILTER target._id == @target
  RETURN path

让我简要解释一下这些部分:

  • FOR target, unused, path =>定义返回值:target =您搜索的顶点,unused =指向它的最后一个边,path =格式为完整路径:{edges: [edge1, edge2, ..], vertices: [vertex1, vertex2, ...]}
  • IN @depth =>定义精确的深度n不短,不再返回路径。也可以是@min..@max,而不是返回长度为min到max的所有路径。
  • ANY =>搜索方向,这将忽略边缘的方向,也可以是INBOUNDOUTBOUND
  • @source =>目标顶点id
  • edgeCollection =>边集合的名称,也可以是GRAPH "graphName"
  • FILTER target._id == @target =>在这里,我们验证我们找到了正确的顶点。
  • RETURN path =>好吧,返回Path;)