多跳查询路径信息返回问题:无serve边时如何返回v1、v2信息?
解决方案
要实现当v2没有:serve边时仍返回v1和v2的名称,只需将原查询中强制匹配的:serve关系改为可选匹配,使用Cypher的OPTIONAL MATCH子句即可:
MATCH (v1:player)-[:follow]->(v2:player) WHERE v1.name == "tom" OPTIONAL MATCH (v2)-[:serve]->(t:team) RETURN v1.name, v2.name, t.name;
说明
MATCH子句负责匹配tom关注的所有玩家v2,这部分是必须匹配的;OPTIONAL MATCH会尝试匹配v2所属的球队t,如果v2没有:serve边,t会以null值返回,不会影响v1和v2的数据输出;- 最终返回结果中,当v2无球队时,
t.name字段会显示为null,但v1和v2的名称仍会正常返回。
内容的提问来源于stack exchange,提问作者foesa Yang
相关产品推荐
相关产品推荐

