2014-04-18 101 views
3

我對Neo4j不是很熟悉,因爲我只用了幾天。Neo4j尋找路徑但沒有某個節點

但現在我想兩個節點

像路徑之間找到路徑:一個& d

甲 - >乙 - 「ç - > d

甲 - >乙 - >電子 - > d

A - >ç - >電子 - > d

,並使用 「WHERE NOT」 消除節點B

所以我會離開路徑A - > C - > E - > D

有沒有什麼辦法可以做到這一點?

這裏是我的暗號:

MATCH (home { name:'Grove' }),(school { name:'Moulton' }),(Ann {name:'Ann'}), 
p = ((home)-[*..4]->(school)) 
WHERE NOT ((home)-[]->(Ann)) 
RETURN p 

它不是爲我工作

+0

嘿,你能分享一些數據庫信息,以便我們可以在它上面進行測試。如這些對象創建和關係。 – elhoucine

回答

4

您可以使用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 
+0

真的很好的幫助! 非常感謝 – Darrellwan

相關問題