Neo4j case语句返回节点属性,如果存在关系则返回true

Neo4j case语句返回节点属性,如果存在关系则返回true,neo4j,cypher,Neo4j,Cypher,如果两个节点之间存在关系,我想返回true或false,如果rel exist,我想返回一个属性,否则只返回false。我尝试了这个查询-当rel存在时它会工作,但如果rel不存在则不会返回任何内容 MATCH (n:User {username: 'user'})-[r:HAS_CAR]-(m:Car) RETURN SIGN(COUNT(r)), CASE SIGN(COUNT(r)) WHEN 1 THEN m.name END as name 当不存在任何关系时,您需要使用可选匹配:

如果两个节点之间存在关系,我想返回true或false,如果rel exist,我想返回一个属性,否则只返回false。我尝试了这个查询-当rel存在时它会工作,但如果rel不存在则不会返回任何内容

MATCH (n:User {username: 'user'})-[r:HAS_CAR]-(m:Car) 
RETURN SIGN(COUNT(r)), CASE SIGN(COUNT(r)) WHEN 1 THEN m.name END as name

当不存在任何关系时,您需要使用
可选匹配

MATCH (n:User{namename:'user'})
OPTIONAL MATCH (n)-[r:HAS_CAR]->(m:Car)
RETURN n, case when count(m)>0 then collect(r.roles) else false end
我使用了
collect
仅返回一行,即使用户有多辆车