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个。上限越低,性能越好,但也可能错过一些更好的途径。