仅通过节点列表的密码路径
Cypher path thorugh only list of nodes
我正在使用 cypher,我需要构建一个查询,该查询 returns 从节点 'START' 到节点 'END' 的路径仅通过 [=24= 类型的指定节点],如图:
Example
例如,我想获取仅通过节点 'a' 和 'b' 的路径,因此我应该返回 'Only 1' 和 'Only 2',而不是 'Only 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)
谢谢。
我通过以下查询设法做到了:
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
我正在使用 cypher,我需要构建一个查询,该查询 returns 从节点 'START' 到节点 'END' 的路径仅通过 [=24= 类型的指定节点],如图:
Example
例如,我想获取仅通过节点 'a' 和 'b' 的路径,因此我应该返回 'Only 1' 和 'Only 2',而不是 'Only 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)
谢谢。
我通过以下查询设法做到了:
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