0
我有以下简单的Neo4j图结构:如何匹配neo4j中的可变长度模式?
(A)-[:A_TO_B]->(B)
任何(B)节点永远只能有2个(A)节点指向它,同时任何(A)节点可以指向大致20(B)节点。
我希望能够找到连接(start:A)和(end: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)
这基本上可以归结为这些模式:[ABA],[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..n中的n是我们想要在任一方向看到这种关系的最大次数? – Jay
是的,确切地说。重复次数与方向正交。 –