Neo4j:如何从路径返回单个实体

Neo4j:如何从路径返回单个实体,neo4j,Neo4j,我正在跑步: MATCH p=(a)-[*2]-() where id(a) = 0 RETURN * 反对: CREATE (P1:Person), (P2:Person), (P3:Person), (P4:Person), (P5:Person), (P6:Person), (P7:Person) CREATE (A1:Address), (A2:Address), (A3:Address), (A4:Address) CREATE (P1)-[:Friend]->(P3

我正在跑步:

MATCH p=(a)-[*2]-() where id(a) = 0 RETURN *
反对:

CREATE 
(P1:Person),
(P2:Person),
(P3:Person),
(P4:Person),
(P5:Person),
(P6:Person),
(P7:Person)

CREATE 
(A1:Address),
(A2:Address),
(A3:Address),
(A4:Address)

CREATE 
(P1)-[:Friend]->(P3),
(P5)-[:Friend]->(P7)

CREATE
(P1)-[:House]->(A1),
(P1)-[:House]->(A2),
(P2)-[:House]->(A2),
(P2)-[:House]->(A4),
(P3)-[:House]->(A3),
(P4)-[:House]->(A2),
(P5)-[:House]->(A1),
(P6)-[:House]->(A3)
然后返回期望值

问题是当数据库只有一个值时,例如:

CREATE 
(P1:Person)

在这种情况下,搜索路径为空。我如何概括上面的查询以获得深度小于2的结构?

搜索路径为空,因为您在
匹配中定义的模式应该在那里

你可以:

a) 对关系部分使用
可选匹配

MATCH (a)
OPTIONAL MATCH p=(a)-[*2]-()
RETURN *
这将为p返回a和null

b) 使用长度0..x表示关系深度:

MATCH p=(a)-[*0..2]-() RETURN *
返回的结果与a)中的相同,但存在差异

在查询中,路径的长度必须为2,此处路径的长度可以介于0和2之间

关于关系深度的解释:


搜索路径为空,因为您在
匹配中定义的模式应该在那里

你可以:

a) 对关系部分使用
可选匹配

MATCH (a)
OPTIONAL MATCH p=(a)-[*2]-()
RETURN *
这将为p返回a和null

b) 使用长度0..x表示关系深度:

MATCH p=(a)-[*0..2]-() RETURN *
返回的结果与a)中的相同,但存在差异

在查询中,路径的长度必须为2,此处路径的长度可以介于0和2之间

关于关系深度的解释: