Graph Neo4j:在指定路径中使用一个节点作为可选节点匹配APOC路径

Graph Neo4j:在指定路径中使用一个节点作为可选节点匹配APOC路径,graph,neo4j,cypher,neo4j-apoc,Graph,Neo4j,Cypher,Neo4j Apoc,我在图形上使用以下neo4j cypher查询: MATCH (start:N1{id:'xyz'}) CALL apoc.path.expandConfig(start, {sequence:'N1, a>, N2, b>, N3, c>, N4', maxLevel:3}) YIELD path RETURN path ORDER BY length(path) DESC 现在我想保留N3作为可选。就像如果链接N2-b->N3不可用,那么它应该检查N2-b->N4等等。

我在图形上使用以下neo4j cypher查询:

MATCH (start:N1{id:'xyz'})
CALL apoc.path.expandConfig(start, {sequence:'N1, a>, N2, b>, N3, c>, 
N4', maxLevel:3}) YIELD path
RETURN path
ORDER BY length(path) DESC
现在我想保留N3作为可选。就像如果链接N2-b->N3不可用,那么它应该检查N2-b->N4等等。我知道我可以做两个独立的查询和检查。但是有没有一种方法可以让N3在这个查询中保持可选性呢


提前谢谢

不,这目前是不可能的。如果要使用不同的节点,这将起作用,因为您可以接受一个不同的标签来代替节点(或者任何节点标签,如果您不介意的话),但是这里没有一种方法可以使用序列,其中定义序列中的节点数/rel不是恒定的。

hm,类似于
调用apoc.path.expandConfig(start,{sequence:'N1,a>,N2,b>| c>,N3 | N4,c>| d>,N4 | N5',maxLevel:3})产生路径
工作?如果每一层有不同的标签和节点,我们可以选择使用另一个,而不是第一个,如果第一个不存在?@InverseFalconThat可以工作,但请记住它不是一个完整路径或另一个完整路径(b>,N3,c>,N4 vs c>,N4,d>N5),因此您可以拥有(b>,N4,c>,N4)和其他此类可能的组合