我有以下简单的neo4j图结构:
(A)-[:A_TO_B]->(B)
任何(B)节点只能有2个(A)节点指向它,同时任何(A)节点都可以指向大约20个(B)节点。
我希望能够找到连接(开始:A)和(结束:A)到指定深度的路径,并返回路径中的所有节点和关系。例如:
1. (start:A)-[:A_TO_B]->(B)<-[:A_TO_B]-(end:A)
2. (start:A)-[:A_TO_B]->(B)<-[:A_TO_B]-(A)-[:A_TO_B]->(B)<-[:A_TO_B]-(end:A)
3. (start:A)-[:A_TO_B]->(B)<-[:A_TO_B]-(A)-[:A_TO_B]->(B)<-[:A_TO_B]-(A)-[:A_TO_B]->(B)<-[:A_TO_B]-(end:A)
这基本上归结为这些模式:[A B A],[A BAB A],[A BABAB A] ......
以下是我不成功的尝试:
MATCH path=(start:A)-[:A_TO_B*0..2]->(end:A)
RETURN path;
MATCH path=(start:A)-[:A_TO_B*0..2]->(B)<-[:A_TO_B*0..2]-(end:A)
RETURN path;
MATCH path=(start:A)-[:A_TO_B*0..2]->(A)<-[:A_TO_B*0..2]-(end:A)
RETURN path;
答案 0 :(得分:2)
因为你需要在一个方向上跟随另一个方向关系,你必须从查询中删除方向:
MATCH path = (start:A)-[:A_TO_B*0..2]-(end:A)
RETURN path;
不幸的是,你不能(还)声明一个可重复的模式,只有可重复的关系。