如何使用 neo4j 密码匹配路径,并在部分路径不存在的情况下返回其余部分

Yuv*_*val 5 neo4j graph-databases cypher

我有一个 Neo4j 图表,看起来像这样:(person:Person)-[:acted_in]->(movie:Movie)-[:played_in]->(country:Country)

我想使用此查询来匹配整个路径:

MATCH path = ((person:Person)-[:acted_in]->(movie:Movie)-[:played_in]->(country:Country)) RETURN NODES(path), RELATIONSHIPS(path)
Run Code Online (Sandbox Code Playgroud)

但是,这是棘手的部分,我还想添加一个条件,如果[:played_in]不存在,则仅返回部分路径: (person:Person)-[:acted_in]->(movie:Movie)

谢谢。

Syl*_*ssy 5

也许类似以下查询的内容对您有用:

MATCH path = (a)-[:b]->(c) 
OPTIONAL MATCH path2 =(c)-[:d]->(e) 
RETURN 
   NODES(path)+COALESCE (NODES(path2),[]), 
   RELATIONSHIPS(path)+COALESCE (RELATIONSHIPS(path2),[])
Run Code Online (Sandbox Code Playgroud)