case语句返回node属性,如果存在关系则为true

时间:2016-07-16 04:20:16

标签: neo4j cypher

如果两个节点之间存在关系,我想返回true或false,如果rel存在则返回属性,否则返回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

1 个答案:

答案 0 :(得分:2)

当不存在任何关系时,您需要使用index.php来涵盖案例:

OPTIONAL MATCH

我使用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 只返回一行,即使用户有多辆车。