2017-08-30 59 views
1

我有一個圖形網絡如下圖所示獲取具體路徑爲使用輸出CYPHER(Neo4j的)

enter image description here

我想要的是讓「唯一」節點1和節點4之間的最長路徑。我已經寫了查詢,如下所示:

MATCH p = ((n {name: '1'})-[:Relation*..]-(n1{name: '4'})) 
WITH max(length(p)) AS pathLength 
MATCH p1 = ((n {name: '1'})-[:Relation*..]-(n1{name: '4'})) 
WHERE length(p1) = pathLength 
RETURN p1 

但是,查詢返回的路徑的部分節點之間的所有關係(上圖中實際上是查詢的結果),有任何方式來避免這種情況?

Neo4j的新手,任何幫助將不勝感激。

感謝

回答

1

您正在使用的nn1之間的所有可能的路徑pathLength。嘗試訂購併限制pathLength

MATCH p = ((n {name: '1'})-[:Relation*..]-(n1{name: '4'})) 
WITH length(p) AS pathLength 
ORDER BY pathLength DESC // greater path lengths first 
LIMIT 1 // get only the greatest 
MATCH p1 = ((n {name: '1'})-[:Relation*..]-(n1{name: '4'})) 
WHERE length(p1) = pathLength 
RETURN p1 

編輯:

此外,試圖在那裏的條件提供了一個靜態值(3)。 似乎沒有改變任何東西。

Neo4j Browser的選項「Connect result nodes」可能已啓用。當啓用此選項時,Neo4j瀏覽器將嘗試連接圖形可視化模式中的結果節點。要禁用它,以達到預期的效果,你應該去的Neo4j瀏覽器設置的章節「圖形可視化」,並取消選中下面的圖片中的「連接結果節點」作爲顯示:

Graph visualization settings

「額外「關係僅在圖形可視化模式下顯示。如果您更改爲表格,文字或代碼,則不顯示這些關係。

相關問題