Neo4j 仅通过节点列表的密码路径

Neo4j 仅通过节点列表的密码路径,neo4j,cypher,Neo4j,Cypher,我使用的是cypher,我需要构建一个查询,该查询返回从节点“开始”到节点“结束”的路径,仅通过“区域”类型的指定节点,如图所示: 例如,我想得到只经过节点“a”和“b”的路径,所以我应该返回“仅1”和“仅2”,而不是“仅3”,因为它可以通过“c”。 我的问题是找到一种简单的方法来创建路径,而不指定要排除哪些节点 我用于创建图形的脚本: MERGE (st:START) MERGE (nd1:END {name: "Only 1"}) MERGE (nd2:END {nam

我使用的是cypher,我需要构建一个查询,该查询返回从节点“开始”到节点“结束”的路径,仅通过“区域”类型的指定节点,如图所示:

例如,我想得到只经过节点“a”和“b”的路径,所以我应该返回“仅1”和“仅2”,而不是“仅3”,因为它可以通过“c”。 我的问题是找到一种简单的方法来创建路径,而不指定要排除哪些节点

我用于创建图形的脚本:

MERGE (st:START)
MERGE (nd1:END {name: "Only 1"})
MERGE (nd2:END {name: "Only 2"})
MERGE (nd3:END {name: "Only 3"})
MERGE (nd4:END {name: "Other 2"})

MERGE (a:Region {name: "a"})
MERGE (b:Region {name: "b"})
MERGE (c:Region {name: "c"})
MERGE (d:Region {name: "d"})

MERGE (st)<-[:PART_OF]-(a)
MERGE (st)<-[:PART_OF]-(b)
MERGE (st)<-[:PART_OF]-(c)
MERGE (st)<-[:PART_OF]-(d)

MERGE (a)<-[:DEPENDS_ON]-(nd1)

MERGE (a)<-[:DEPENDS_ON]-(nd2)
MERGE (b)<-[:DEPENDS_ON]-(nd2)

MERGE (a)<-[:DEPENDS_ON]-(nd3)
MERGE (b)<-[:DEPENDS_ON]-(nd3)
MERGE (c)<-[:DEPENDS_ON]-(nd3)

MERGE (a)<-[:DEPENDS_ON]-(nd4)
MERGE (c)<-[:DEPENDS_ON]-(nd4)
MERGE(st:START)
合并(nd1:END{name:“仅1”})
合并(nd2:END{name:“仅2”})
合并(nd3:END{name:“仅3”})
合并(nd4:END{name:“Other 2”})
合并(a:区域{name:“a”})
合并(b:区域{name:“b”})
合并(c:区域{name:“c”})
合并(d:区域{name:“d”})

MERGE(st)我通过以下查询实现了这一点:

MATCH (n:START)<-[:PART_OF]-(reg:Region)<-[:DEPENDS_ON]-(nd:END)
WHERE reg.name <> "a" AND reg.name <> "b"
WITH COLLECT(nd) as unaffected
MATCH (affected:END)
WHERE NOT affected in unaffected
RETURN affected

<代码>匹配(N:START),如果提供简单的脚本代码来创建这个新的Ne4J示例,这将是非常有帮助的,不清楚哪些节点有标签区域,如果中间的所有节点都有区域标签,那么所有路径都应该返回。简而言之,您必须(以某种方式)指定需要哪些路径,哪些不需要。您希望执行的规则是什么?我相信它仍然是“待定”的,我在这里没有看到它。@plastic我添加了一个用于创建图表的片段。