具有公共关系的 neo4j 最短路径 属性

neo4j shortest path with common relation property

如下图所示,我们有具有关系但具有不同属性的节点。我怎样才能找到节点 A 和节点 E 之间的最短路径,条件是路径中的关系应该有共同的 属性?例如这里它只应该给出从节点 A 到节点 B 的带有 属性“a”的路径,因为这里的 a 很常见。

编辑 我想根据 a 和下一个节点之间的可用关系(这里的关系属性是 a、b 和 c)找到节点 a 和 e 之间的最短路径,我怎样才能找到 a 和 e 之间的最短路径,其中关系 属性 是相同(此处 属性 a) 例如,它应该 return 只有带有 属性 a 的路径(并且路径将是 a>b>d>e)

假设关系上的 属性 被称为 filter,您可以定义一个 ALL 谓词来检查路径中的所有关系属性过滤器是否具有与第一个关系相同的值 属性 :

MATCH (p1:Node {value: "a"})
MATCH (p2:Node {value: "b"})
MATCH path=shortestPath((p1)-[r*]-(p2))
WHERE ALL( x IN relationships(path) 
      WHERE x.filter = head(relationships(path)).filter
    )
RETURN path

我找到了答案,答案是:

Match (a:node)-[r1]->()
with collect(r1.property) as m
MATCH p=shortestPath( (a:node)-[:r1*]->(e:node) ) 

AND ALL(x in relationships(p) WHERE x.propery in m)
RETURN p