Neo4j 密码匹配查询合并结果集

Neo4j 密码匹配查询合并结果集,neo4j,cypher,Neo4j,Cypher,我是CQL的新手,如果我也跟着他,有人能帮我解决这个问题,找到带标志的追随者列表吗。我正这样努力 MATCH (n:users_master)-[r:FOLLOW]->(m:users_master) OPTIONAL MATCH (n:users_master)<-[r2:FOLLOW]-(m:users_master) CASE when EXISTS(r2) THEN n.flag= 1 ELSE n.flag=0 END where id(m)=35 RETUR

我是CQL的新手,如果我也跟着他,有人能帮我解决这个问题,找到带标志的追随者列表吗。我正这样努力

MATCH (n:users_master)-[r:FOLLOW]->(m:users_master)
OPTIONAL MATCH (n:users_master)<-[r2:FOLLOW]-(m:users_master)   
CASE when EXISTS(r2) THEN n.flag= 1 ELSE n.flag=0 END  
where id(m)=35  
RETURN n
匹配(n:users\u master)-[r:FOLLOW]->(m:users\u master)
可选匹配(n:users\u master)EXISTS()函数可用于检查模式是否存在,并且在您的情况下可以替换可选匹配

此外,如果您不打算使用模式中的变量,则不需要它们,因此在您的关系中根本不需要它们

MATCH (n:users_master)-[:FOLLOW]->(m:users_master)
WHERE id(m)=35  
RETURN n, EXISTS( (n)<-[:FOLLOW]-(m) ) as flag
匹配(n:users\u master)-[:FOLLOW]->(m:users\u master)
其中id(m)=35
返回n,存在((n)(m:users\u master)
其中id(m)=35

返回n{.*,标志:存在((n)您的可选匹配中的关系两端都有箭头,您可能需要修复它。另外,布尔值返回是否对您有效,而不是1和0?这可以非常容易地完成。抱歉,箭头这是错误的,我删除了它。另外,不建议使用neo4j节点ID查找,因为ID被回收并作为节点重新使用es被删除。这意味着,如果在neo4j中删除了节点或关系,并且id被重新用于其他节点,则存储该id的neo4j之外的系统可能与该id现在指向的位置不同步。如果需要,建议在节点上使用您自己的唯一id,例如UUID。谢谢Falcon,但这不是在neo4j>3中工作。您有其他选择吗?这将在neo4j 3.1.x及以上版本中工作。版本3.0.x没有地图投影功能。您可能需要使用APOC程序作为解决方法。我用此替代解决方案更新了我的答案。
MATCH (n:users_master)-[:FOLLOW]->(m:users_master)
WHERE id(m)=35  
RETURN n {.*, flag: EXISTS( (n)<-[:FOLLOW]-(m) ) }
MATCH (n:users_master)-[:FOLLOW]->(m:users_master)
WHERE id(m)=35  
RETURN apoc.map.setKey(properties(n), 'flag', EXISTS( (n)<-[:FOLLOW]-(m) )) as n