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之间
关于关系深度的解释: