示例语句如下:
match (v1:player) -[:follow]->(v2:player)-[:serve]->(t:team) where v1.name == “tom” return v1.name, v2.name, t.name;
当 v2 不存在 serve 这条边时,整个语句不返回任何数据。
请教一下,如何在 v2 的 serve 边不存在时,也要返回 v1.name、v2.name 呢?
示例语句如下:
match (v1:player) -[:follow]->(v2:player)-[:serve]->(t:team) where v1.name == “tom” return v1.name, v2.name, t.name;
当 v2 不存在 serve 这条边时,整个语句不返回任何数据。
请教一下,如何在 v2 的 serve 边不存在时,也要返回 v1.name、v2.name 呢?
首先,“v2 不存在 serve 这条边时整个语句不返回任何数据” 是符合预期的,cypher 语句的输出结果必须完全满足 pattern,你可以将 pattern 理解为谓词。
v2 的 serve 边不存在的时候返回 v1,v2:
MATCH (v1:player)-[:follow]->(v2:player)
where v1.name=="tom" and not (v2)-[:serve]->(t:team)
RETURN v1.name, v2.name
无论 v2 的 serve 边是否存在都返回 v1,v2:
MATCH (v1:player)-[:follow]->(v2:player)
where v1.name=="tom"
RETURN v1.name, v2.name
非常感谢您的解答!
还请问一下,有没有办法用一条语句实现这个效果:当 v2 的 serve 边不存在时返回 v1 和 v2,边存在时返回 v1、v2 和 t 呢?
我目前想到的是用 find path 或者 get subgraph,但是这样会把顶点的所有属性都返回,而我只想要顶点的 name 属性,望回复~
MATCH (v1:player)-[:follow]->(v2:player)
where v1.name=="tom"
optional MATCH (v2)-[:serve]->(t:team)
RETURN v1.name, v2.name, t.name
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。