如何使用neo4j密码匹配路径,如果部分路径不匹配';不要把剩下的还给我

如何使用neo4j密码匹配路径,如果部分路径不匹配';不要把剩下的还给我,neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,我有一个Neo4j图形,看起来像这样:(人物:人物)-[:扮演]->(电影:电影)-[:扮演]->(国家:国家) 我想使用此查询匹配整个路径: MATCH path = ((person:Person)-[:acted_in]->(movie:Movie)-[:played_in]->(country:Country)) RETURN NODES(path), RELATIONSHIPS(path) 但是,这里是棘手的部分,我还想添加一个条件,如果[:played\u in]不存在

我有一个Neo4j图形,看起来像这样:(人物:人物)-[:扮演]->(电影:电影)-[:扮演]->(国家:国家)

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

MATCH path = ((person:Person)-[:acted_in]->(movie:Movie)-[:played_in]->(country:Country)) RETURN NODES(path), RELATIONSHIPS(path)
但是,这里是棘手的部分,我还想添加一个条件,如果
[:played\u in]
不存在,只需返回部分路径:(person:person)-[:acted\u in]->(movie:movie)


谢谢。

以下查询可能对您有用:

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

在您的cypher中,所有这些都是变量,没有标签或关系类型,并且不清楚这些变量中的哪些以前绑定到图形元素,哪些是新的,并且打算从此匹配中匹配到图形元素。使用可变长度路径匹配多达2个关系非常容易:
match path=(start)-[*…2]->(end)
,但您的问题并不清楚这是否是您所需要的,或者您是否正在使用特定的标签和关系类型。你能澄清你的问题吗?添加了一些标签,希望它能让问题更清楚一点。效果很好!我不知道聚结的事很酷!但不要忘记考虑@inverseFalcon注释和可变长度路径。