我有一个模式,其中节点通过两种类型的关系连接 - r:A和r:B . 我正在尝试编写一个模式,它将找到从节点N到节点M的每条路径 . 这可以通过以下cypher查询来完成:
match path = (n)-[:A|:B*]->(m) return path;
不幸的是,这不是我所需要的 . 我需要找到从(n)到(m)的每条路径,其中深度通过关系r:A可以是无限的,但沿途只能使用有限数量的r:B关系 . 在快乐的一天场景中,密码查询将如下所示:
match path = (n)-[:A*|:B*0..3]->(m) return path;
但是,cypher不允许这种语法 . 即使在路上使用另一个“帮助”节点,我也无法解决这个问题:
match path = (n)-[:A*]->()-[:B*0..3]->(m) return path;
这也不符合我的需要,因为节点可以以任何可能的方式互连 . 例如:
(n)-[r:A]-()-[r:A]-()-[r:A]-(m)
(n)-[r:A]-(m)
(n)-[r:A]-()-[r:B]-()-[r:A]-()-[r:B]-()-[r:A]-()-[r:A]-(m)
有没有办法如何实现这一目标?如果不是在密码中,可以在gremlin / neo4j遍历api /嵌入式函数的spring数据neo4j项目中完成吗?
谢谢你的答案 .
1 回答
试试这个:
我不知道我是否完全理解这个问题 . 请告诉我 .
编辑:
我在评论后添加了第二个查询 . 这个解决方案很难看,但它是一个很好的解决方法 .