【发布时间】:2018-03-14 04:44:06
【问题描述】:
如何在 arangodb 3.1 中获取深度为 n 的两个顶点之间的所有路径? 我在 AQL 文档中发现的唯一可能性是最短路径。但我想获得所有路径,而不仅仅是最短的路径。
感谢您的帮助!
【问题讨论】:
-
谢谢@kyle 但这不适用于 arangodb 3.1
标签: arangodb
如何在 arangodb 3.1 中获取深度为 n 的两个顶点之间的所有路径? 我在 AQL 文档中发现的唯一可能性是最短路径。但我想获得所有路径,而不仅仅是最短的路径。
感谢您的帮助!
【问题讨论】:
标签: arangodb
为了获得与已知 _id 值的顶点之间的长度正好为 n 的所有路径,您可以使用以下 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 => 目标顶点idedgeCollection => 边缘集合的名称,也可以是GRAPH "graphName"
FILTER target._id == @target => 在这里我们验证我们找到了正确的顶点。RETURN path => 返回路径 ;)【讨论】: