Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ArangoDB UniqueVertexs全局,不包括第一个和最后一个顶点_Arangodb - Fatal编程技术网

ArangoDB UniqueVertexs全局,不包括第一个和最后一个顶点

ArangoDB UniqueVertexs全局,不包括第一个和最后一个顶点,arangodb,Arangodb,我试图找到从一个朋友到另一个朋友的所有独特路径 当我使用uniqueVertices:“global”时,它只返回一条路径,因为端点被认为是全局唯一路径的一部分 FOR v,e,p IN 1..6 ANY "entities/foo" GRAPH "friendGraph" OPTIONS { bfs: true, uniqueVertices: 'path' } SORT e.weight ASC FILTER v._id == "entities/bar" RETURN p 有没有办法让

我试图找到从一个朋友到另一个朋友的所有独特路径

当我使用uniqueVertices:“global”时,它只返回一条路径,因为端点被认为是全局唯一路径的一部分

FOR v,e,p
IN 1..6
ANY "entities/foo" 
GRAPH "friendGraph"
OPTIONS {
bfs: true,
uniqueVertices: 'path'
}
SORT e.weight ASC
FILTER v._id == "entities/bar"
RETURN p
有没有办法让唯一顶点:“全局”忽略端点?我知道没有具体的方法来做到这一点。但是有没有办法完成同样的事情呢

“路径”导致了许多结果


谢谢。

为了使用全局唯一的顶点,但对于最后一个顶点,您可以手动在路径中添加最后一步,如下所示:

FOR v,e,p
IN 0..5
ANY "entities/foo"
GRAPH "friendGraph"
OPTIONS {
    bfs: true,
    uniqueVertices: 'global'
}
FILTER p.vertices[*]._id ALL != "entities/bar"
FOR w,f
IN 1..1
ANY v
GRAPH "friendGraph"
FILTER w._id == "entities/bar"
SORT f.weight ASC
RETURN { edges: APPEND(p.edges, [f]), vertices: APPEND(p.vertices, [w]) }
我想指出两件事:

  • 您添加的
    SORT
    操作可能无法实现您想要的效果:它根据路径最后一条边的权重对路径进行排序
  • 这不会找到两个顶点之间的所有唯一路径。对于这一点,使用选项
    uniqueVertices:“path”
    是正确的,而且可能有很多

如果A -B-C-D-E也有路径,你认为A-B、A-B-C和A-B-C-D不是唯一的吗?如果你需要其他东西,你能提供一个具体的例子吗?问题是我正在获取从a到E的所有连接。我不能使用unique global,因为它在到达E一次后会停止。但是,我不想使用唯一路径,因为结果太多了。因此,如果有一种方法可以获得与unique global相同的效果,但忽略FILTER v中的_id._id==“entities/bar”,我仍然感到困惑。你说你想得到所有的连接,这似乎是唯一路径选项所能做到的,但另一方面你并不想得到所有的连接,因为你说它们太多了。如果您可以提供一个示例数据集或图形来说明您希望返回哪些路径以及不希望返回哪些路径,这将非常有用。对不起。让我尽我所能重新解释一下。我的问题最简单的形式是:我想找到所有路径,从一个特定的起始顶点“foo”到一个特定的顶点“bar”。我知道的唯一方法是使用“FILTER v._id==”entities/bar“。然而,因为它是唯一的全局性的,所以它只允许“实体/栏”一次。因此只给出一个结果。非常感谢您的帮助。好的,那么您想得到两个顶点之间的所有可能路径,不仅仅是一条最短路径,也不是所有最短路径,而是连接两个节点的所有路径?不确定B(橙色),路径上的顶点是唯一的,但顶点和边不是全局唯一的。即使使用权重属性,您也可以在两条边具有相同权重且必须随机选择一条边的情况下运行,从而使遍历不确定。这非常有效!这条线在干什么?过滤p.vertices[*]。\u id ALL!=“实体/条”它防止第一个
FOR
操作返回包含目标顶点的路径
“实体/条”
,现在第二个
FOR
操作可以到达该路径。