繁体   English   中英

ArangoDB:如何获取2个顶点之间的所有可能路径?

[英]ArangoDB : How to get all the possible paths between 2 vertices?

如何获得maxDepth = 2的2个顶点之间的所有可能路径(例如X和Y)?

我尝试使用TRAVERSAL但是执行大约需要10秒钟。 这是查询:

FOR p IN TRAVERSAL(locations, connections, "X", "outbound", { minDepth: 1, maxDepth: 2, paths: true }) 
FILTER p.destination._key == "Y" 
RETURN p.path.vertices[*].name

位置(顶点)集合包含23753个文档,而连接(边)集合具有123414文档。

如果通过选项filterVertices将目标过滤器直接放入Traversal中,则可以filterVertices加快查询速度,以提供遍历应触及的顶点示例。 使用vertexFilterMethod可以定义与示例不匹配的所有顶点应该发生的情况。

因此,在您的查询中,您只想匹配目标顶点“ Y”,并且所有其他顶点都应通过,但不包括在结果中( exclude

这使得后面的FILTER变得过时了。 现在,内部优化器无法自动执行此操作,但此魔术已在我们的路线图上。

这是一个包含优化的查询:

FOR p IN TRAVERSAL(locations, connections, "X", "outbound", { minDepth: 1, maxDepth: 2, paths: true, filterVertices: [{_key: "Y"}], vertexFilterMethod: ["exclude"]})
RETURN p.path.vertices[*].name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM