我对Neo4j不是很熟悉,因为我刚刚使用它几天。
但现在我想找到两个节点之间的路径
像路径一样:A& dA - > B - > C - > d
A - > B - > E - > d
A - > C - > E - > d
并使用“WHERE NOT”来消除Node B
所以我将离开路径A - > C - > E - > d
有什么方法可以做到这一点吗?
这是我的Cypher:
MATCH (home { name:'Grove' }),(school { name:'Moulton' }),(Ann {name:'Ann'}),
p = ((home)-[*..4]->(school))
WHERE NOT ((home)-[]->(Ann))
RETURN p
这对我不起作用
答案 0 :(得分:5)
您可以使用NONE
子句中的WHERE
谓词来过滤掉包含B
节点的路径。有关示例,请参阅http://console.neo4j.org/?id=hppthl。
cypher语句如下所示:
MATCH p=(:Person { name:'A' })-[:KNOWS*..4]->(:Person { name:'D' }),
(without:Person { name:'B' })
WHERE NONE (x IN nodes(p) WHERE x=without)
RETURN p