2017-06-02 164 views
1

我想獲取所有未連接到給定節點集合的節點。假設我有5個節點A,B,C,D,E。現在A-> B-> C與:Is_Friend關係連接。現在我想要所有沒有連接到A的節點(即D和E)。獲取未連接到Neo4j中特定節點的節點

我嘗試這樣做查詢,但它不工作

MATCH (a:Friend{name:"A"})-[:Is_Friend_Of*]->(b:Friend) 
MATCH (c:Friend) 
WHERE NOT (c)-[:Is_Friend_Of]->(b) 
RETURN c 

回答

2

氏查詢應該做你想要它,但是,我要提醒的是取決於你的數據庫,你可能無法比擬的朋友數量的大小是什麼得到很多比賽。

// match the single longest chain of friends in a :Is_Friend_Of relationship 
// starting with 'A' that is possible 
MATCH path=(a:Friend {name:"A"})-[:Is_Friend_Of*]->(b:Friend) 
WHERE NOT (b)-[:Is_Friend_Of*]->() 
WITH path 

// then find the other friends that aren't in that path 
MATCH (c:Friend) 
WHERE NOT c IN nodes(path) 
RETURN c 
+0

謝謝這個查詢是完美的。 – Tg0206