Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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
Neo4j 密码集,其中条件只能显示路径中每个节点的一个关系_Neo4j_Cypher - Fatal编程技术网

Neo4j 密码集,其中条件只能显示路径中每个节点的一个关系

Neo4j 密码集,其中条件只能显示路径中每个节点的一个关系,neo4j,cypher,Neo4j,Cypher,我得到了一个循环型关系图。因此,在我的图中的每个节点之间可能有两种不同的方向关系(传出和传入)。我正在尝试在不使用shortestpath()的情况下查找两个节点之间的路径。如何给出条件,设置路径中每个节点之间只显示1个关系?我的问题是: Match p = (A)-[r*]-(b) return p 我应该为where部分写什么?所以你真正想要的是最短加权路径。Cypher还不直接支持这个,但是您可以这样查询它 MATCH (start:Point {id: '1'}), (end:Poin

我得到了一个循环型关系图。因此,在我的图中的每个节点之间可能有两种不同的方向关系(传出和传入)。我正在尝试在不使用
shortestpath()
的情况下查找两个节点之间的路径。如何给出条件,设置路径中每个节点之间只显示1个关系?我的问题是:

Match p = (A)-[r*]-(b) return p

我应该为where部分写什么?

所以你真正想要的是最短加权路径。Cypher还不直接支持这个,但是您可以这样查询它

MATCH (start:Point {id: '1'}), (end:Point {id: '2'})
MATCH p=(start)-[:GO_TO*1..25]->(end)
WITH p,reduce(s = 0, r IN rels(p) | s + r.myValueProp) AS dist
RETURN p, dist ORDER BY dist DESC LIMIT 1

首先,如果不使用shortestpath(),则需要限制[r*],以便查询不会产生无限路径。另外,您是否正在尝试查找仅使用每条边一次的所有路径?我正在尝试查找两个节点之间的最短距离。我的关系类型GO_TO中有距离属性。我认为这应该只是一次,而不是全部。例如,我有两个节点A,B,我也有两个关系在A,B之间(传入和传出),我只想在我的路径中显示传出方向。因此,当我查询A-F之间的路径时,它应该只显示A->B->C->D->E->F@TezraThanks,这是得到答案的正确方法。但当我有巨大的关系和节点时。它将产生巨大的结果,这将使我的查询进入无限循环。这就是为什么我想将关系方向设置为一个方向@Terze@LinBernie这也是为什么我将它可以在路径中使用的节点数限制为25个。上限越低,性能越好,但也可能错过一些更好的途径。