2017-01-09 11 views
0

私はこのようなノードを持っています。 enter image description hereneo4jで除外されたノードの数を取得する方法

ノード(l1)にマップされていないすべてのノード(c1からc5)を取得したいので、結果ノードは(c2)、(c4)、および(c5)にする必要があります。 Neo4jでどのように問い合わせることができますか?

+0

cノードはすべて同じラベルですか?もしそうなら、l1にリンクされていないラベルのすべてのノード、またはこの特定のサブセットだけを探していますか? – InverseFalcon

+0

また、データのテキスト表現を提供できますか?あなたの図面から、2つの "l1"ノードがあるように見えます。一番右のノードに書いたものも明確ではありません。 – cybersam

答えて

0

あなたが目的のノードへの一方向のパスが存在しない、そこからそれらのノードを選択する必要があります

MATCH (E {name: 'l1'}) WITH E 
MATCH (M) WHERE NOT (M)-[*]->(E) 
RETURN M 
0

ナイーブ溶液は次のようになり

(C、LノードラベルR1は、リレーションシップ・タイプです)
MATCH (c:C) 
WHERE NOT((c)-[:R1]->(l:L {...}) 
RETURN c 

ここで、(l:L {...})は、ノードl1を識別するフィルタです。

Cノードから出てくる関係が非常に多く、遅くなる場合。次のように試すことができます:

MATCH (l:L {...})<-[:R1]-(c:C) 
WITH COLLECT(c) AS cs 
MATCH (c2:C) 
WHERE NOT c2 NOT cs 
RETURN c2 

データに基づいて2つの中から選択する必要があります。

関連する問題