如何在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个文档。
答案 0 :(得分:2)
如果您通过选项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