如何在arangodb 3.1中获得深度为n的两个顶点之间的所有路径?我在AQL文档中找到的唯一可能性是最短路径.但我想得到所有的路径,而不仅仅是最短路径.
谢谢你的帮助!
为了获得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
=>搜索方向,这将忽略边缘的方向,也可以是INBOUND
或OUTBOUND
@source
=>目标顶点id
edgeCollection
=>边缘集合的名称,也可以 GRAPH "graphName"
FILTER target._id == @target
=>这里我们验证我们找到了正确的顶点.
RETURN path
=>返回路径;)