2017-07-27 49 views
4

難以理解返回路徑中的關係方向。Neo4j錯誤交替關係方向在密碼外殼中返回的路徑

我有這樣

(:START)-[:NEXT]->(:NODE)-[:NEXT]->(:NODE)... 

現在我匹配從在:NEXT高達10的長度方向上的起始節點開始的所有路徑的曲線圖,說。查詢看起來像

MATCH t=((:START)-[:NEXT*..10]->(:NODE)) 
RETURN t; 

我得到的輸出路徑看似混雜:NEXT方向像

(:START)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE)-[:NEXT]->(:NODE)<-... 

,我無法理解,其中交替的方向來的。

編輯: 該圖只是一條直線(單向)。沒有周期,沒有分支。請用以下方式複製shell中的場景:

CREATE (s:START); 
MATCH (s:START) MERGE (s)-[:NEXT]->(a:NODE)-[:NEXT]->(b:NODE)-[:NEXT]->(c:NODE)-[:NEXT]->(d:NODE); 
MATCH t=((:START)-[:NEXT*..10]->()) return t; 

+------------------------------------------------------------------------------+ 
| t                   | 
+------------------------------------------------------------------------------+ 
| (:START)-[:NEXT]->(:NODE)             | 
| (:START)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE)         | 
| (:START)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE)-[:NEXT]->(:NODE)     | 
| (:START)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE) | 
+------------------------------------------------------------------------------+ 

看看在返回的路徑中,箭頭如何在方向上交替?這就是讓我困惑的原因。

+0

我想請[點擊這裏]看看(http://console.neo4j.org/r/2zqmqp)和執行查詢。我只是編輯查詢了變化':ST'到':START'和':N'爲':NEXT'。我相信這些是錯字錯誤。對我來說,結果看起來不錯,不是嗎? –

+0

請參閱上面錯別字的問題糾正 – tscherg

+0

我執行你的查詢再次一步一步,結果看起來確定。看看[這裏](http://console.neo4j.org/r/3p9vpn)。 –

回答

2

從原來問題的編輯:

編輯:該圖僅僅是一個直線(與一個方向)。沒有 週期,沒有分支。請通過以下方式複製場景殼 :

執行的問題真的發生在cypher-shell的語句。在我看來一個錯誤。我在cypher-shell的Github中搜索了這個問題,但沒有發現任何東西。所以我打開了一個issue

編輯2:

The issue我在Github上打開這個commit被引用。可能這個修補程序將在下一個版本中發佈。

EDIT 3

問題關閉並固定在​​。


原來答案是如下:

我模擬您的方案在這裏。看:

樣本數據集:

CREATE (node1:Node {id:1}) 
CREATE (node2:Node {id:2}) 
CREATE (node3:Node {id:3}) 
CREATE (node4:Node {id:4}) 
CREATE (node1)-[:NEXT]->(node2) 
CREATE (node2)-[:NEXT]->(node3) 
CREATE (node3)-[:NEXT]->(node4) 
CREATE (node4)-[:NEXT]->(node2) 

查詢:

MATCH t=((:Node {id:1})-[:NEXT*..10]->(:Node {id:4})) 
RETURN t; 

結果:

Result 1

正如你所看到的(並且在問題描述)返回(:Node {id:4})-[:NEXT]->(:Node {id:2})。但是,這是因爲在Neo4j瀏覽器中啓用了「連接結果節點」選項。您可以在Neo4j瀏覽器設置中禁用它。看:

Settings

再次禁用「CONNECT結果節點」並運行查詢後:

Result 2

注意選擇「連接結果節點」只適用於的圖形可視化結果。那就是:(:Node {id:4})(:Node {id:2})之間的關係確實不存在的結果,如果你改變你的可視化,以「表」,「文本」或「密碼」是不存在的。

+1

謝謝你非常詳細的答案!不幸的是我需要進一步澄清。我的圖中沒有定向循環。請在上面的原始問題中查看我的編輯 – tscherg