Cypher:如果关系不存在,如何返回节点?

时间:2014-03-18 15:58:37

标签: neo4j cypher

我有节点的用户和建筑标签,关系是User-[:HAS_PERMISSION]->Building

要获取用户有权访问的所有建筑物,请使用MATCH (u:User {id: {id}}),(u)-[r:HAS_PERMISSION]->(b:Building) return b

如果用户存在并且没有关系,我该如何才能返回用户? (基本上我也想知道用户是否存在..)

1 个答案:

答案 0 :(得分:3)

不确定我是否正确理解了您的问题,但我认为您需要OPTIONAL MATCH。此查询显示所有具有或不具有建筑物访问权限的用户。

MATCH (u:User)
OPTIONAL MATCH (u)-[r:HAS_PERMISSION]->(b:Building) 
RETURN u, b

或许您的要求更简单。如果您只是想要所有用户,则无需使用模式匹配:

MATCH (u:User)
RETURN u