2017-10-19 129 views
0

不確定的第2層關係的回報節點如何最好地字本 - 下面的圖中暗號查詢 - 這是與2個或更多的間接節點

neo

我試圖返回的所有節點第二層節點與2個或更多第一層節點相關,但只有第一層節點不同。因此,在示例圖片中,我想返回灰色節點660082,綠色節點110258以及與它相關的所有粉色節點&關係。例如,我不想看到粉紅色節點與同一綠色節點具有2個關係的綠色節點。到目前爲止,我的暗號看起來像這樣

MATCH (i:IFB_Flagged)-[r]->(m:Matters)<-[r2]-(ie:Indirect_Entity) 
WITH i, ie,r, collect(m) AS overlap 
WHERE size(overlap) > 1 and i.id = '660082' 
RETURN i, ie, overlap 

這確實出現了工作,因爲它篩選出只有一個鏈接到一個綠色節點粉紅色的節點,但我無法弄清楚如何只返回粉紅色的節點,其中相關的綠色節點不是同一個節點

UPDATE

當增加一個獨特的收集&刪除where子句完全,我得到一個完全不同的曲線,但它實際上是接近我想要顯示neo2

我仍然希望看到與多個綠色節點相關的所有粉色節點 - 但我不想看到僅與一個綠色節點(屏幕左下角的6個粉色節點)相關的粉色節點

這是我的Cypher - 我不確定爲什麼collect(distinct m)在這種情況下不起作用?

MATCH (i:IFB_Flagged)-[r]->(m:Matters)<-[r2]-(ie:Indirect_Entity) 
WITH i, ie,r, collect(distinct m) AS overlap 
WHERE i.id = '385886' 
RETURN i, ie, overlap limit 20 
+1

但在你的榜樣綠色節點是所有紅色節點相同,同爲每個紅色節點的兩個關係......總之,可以嘗試在一個獨特的條款在您的收集,是這樣的:'收集(明確的m)' –

+1

問題的措詞不符合你實際上想要的。 – cybersam

+0

問題中的紅色節點實際上更像粉紅色。讓我們等待OP得到這個結果。 –

回答

2

使用DISTINCT關鍵字爲collectdocs):

DISTINCT運營商一起工作與聚集。它用於在通過聚合函數運行它們之前使所有值都具有唯一性。

另外,爲簡明起見,您可以在MATCH子句內移動支票id

更新。試試這個。

MATCH (i:IFB_Flagged)-[r]->(m:Matters)<-[r2]-(ie:Indirect_Entity) 
WHERE i.id = '385886' 
WITH i, ie, collect(distinct m) AS overlap 
WHERE size(overlap) > 1 
RETURN i, ie, overlap 
LIMIT 20 
+1

我相信您的解決方案是正確的答案。但是,在我看來,問題中提供的問題描述與描述的輸出不匹配。你同意? –

+0

我同意問題中的顏色已關閉。 –

+0

就是這樣!非常感謝 –