如何在neo4j

时间:2018-08-01 10:37:36

标签: neo4j cypher spring-data-neo4j

我有5个节点,1,2,3,4,5
五个节点之间的关系如下:

1-->2
2-->3
1-->3
2-->4
3-->5
4-->5

在线模型http://console.neo4j.org/r/8h0c91
使用以下密码查询获得一级连接节点

match (n:Person{name:"1"})-[r]-(m:Person) return n,m,r

结果:

n                        r                          m
(20:Person {name:"1"})  []  (20:Person {name:"1"})
(20:Person {name:"1"})  [(20)-[21:Follow]->(22)]    (22:Person {name:"3"})
(20:Person {name:"1"})  [(20)-[20:Follow]->(21)]    (21:Person {name:"2"})

只能得到1-> 2和1-> 3之间的关系,不能得到2-> 3。
使用以下密码查询y获取第二级连接节点。

match (n:Person{name:"1"})-[r:Follow*0..2]-(m:Person) return n,m,r

结果:

n   m   r
(0:Person {name:"1"})   (0:Person {name:"1"})   []
(0:Person {name:"1"})   (1:Person {name:"2"})   [(0)-[0:Follow]->(1)]
(0:Person {name:"1"})   (2:Person {name:"3"})   [(0)-[0:Follow]->(1), (1)-[2:Follow]->(2)]
(0:Person {name:"1"})   (3:Person {name:"4"})   [(0)-[0:Follow]->(1), (1)-[3:Follow]->(3)]
(0:Person {name:"1"})   (2:Person {name:"3"})   [(0)-[1:Follow]->(2)]
(0:Person {name:"1"})   (1:Person {name:"2"})   [(0)-[1:Follow]->(2), (1)-[2:Follow]->(2)]
(0:Person {name:"1"})   (4:Person {name:"5"})   [(0)-[1:Follow]->(2), (2)-[4:Follow]->(4)]

我无法获得4-> 5和2-> 3的关系。
我的问题是如何获取所有节点以及所有neo4j节点之间的关系。

2 个答案:

答案 0 :(得分:0)

您可以只排除name匹配项并添加关系的方向,它将返回所有三个关系。

MATCH (n:Person)-[r]->(m:Person) 
RETURN n,m,r

答案 1 :(得分:0)

从您的评论中,您正在寻找“从起始节点开始的所有可达节点(以及它们之间的所有关系)”

在这种情况下,path expander procedures in APOC Procedures应该具有您想要的:

MATCH (n:Person{name:"1"})
CALL apoc.path.subgraphAll(n, {maxLevel:2}) YIELD nodes, relationships
RETURN nodes, relationships

上面进行了编辑,以在遍历上添加上限。