2017-01-09 51 views
0

我有這樣的節點。我想要得到沒有映射到節點(l1)的所有節點(從c1到c5),所以我的結果節點應該是(c2),(c4)和(c5)。如何在Neo4j中查詢。如何獲得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 

您應該根據您的數據在兩者之間進行選擇。

相關問題