2017-06-02 21 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

関連する問題