2016-08-03 60 views
0

我有两个用户:Neo4j的暗号2版查找一个节点,可能会或可能不存在的关系,同时返回

CREATE (a:user {id: 1}) 
CREATE (b:user {id: 2}) 

用户可以按照对方:

MATCH (a:user {id: 1}), (b:user {id: 2}) 
CREATE (a)-[r:FOLLOWS]->(b) 

为了节省网络上的多次往返我想查找用户,以及是否有其他用户在同一查询中关注他们:

MATCH (a:user {id: 1}), (b:user {id: 2}), (a)-[r:FOLLOWS]->(b) 
RETURN a, b, r 

但是,如果FOLLOWS的关系不存在,我什么也得不到。有没有什么办法可以总是返回用户,并且如果关系不存在则获得NULL的关系?

回答

2

OPTIONAL MATCH将尝试匹配的模式,并返回那些空值不存在:

MATCH (a:user {id: 1}), (b:user {id: 2}) 
OPTIONAL MATCH (a)-[r:FOLLOWS]->(b) 
RETURN a, b, r 
相关问题