我正在跑步:
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的结构?
答案 0 :(得分:2)
搜索路径为空,因为您在MATCH
中定义的模式应该在那里。
你可以:
a)使用OPTIONAL MATCH
作为关系部分:
MATCH (a)
OPTIONAL MATCH p=(a)-[*2]-()
RETURN *
哪个会为p
返回a和nullb)使用长度0..x作为关系深度:
MATCH p=(a)-[*0..2]-() RETURN *
哪个会和a中的相同,但是存在差异
在您的查询中,路径必须长度为2,此处路径可以介于0到2之间
关于关系深度的解释: