Neo4j查找路径但没有某个节点

时间:2014-04-18 09:43:03

标签: path neo4j nodes cypher

我对Neo4j不是很熟悉,因为我刚刚使用它几天。

但现在我想找到两个节点之间的路径

像路径一样:A& d

A - > 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

这对我不起作用

1 个答案:

答案 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