2014-02-21 101 views
0

我有在畫面連接像是從link複製一個節點路徑 - CYPHER(查詢兩個節點之間的所有路徑)

節點我做查詢START a=node(27), b=node(0) MATCH p=b<-[*]-a RETURN p

我期望我會得到3路但得到6. 首先3是正確的,但在最後3已經得到重複的 '節點0'

例如:

正確的路徑:0 - > 41 - > 2 - > - > 27
重複節點路徑:0 - > 0 - > 41 - > 2 - > 27

不正確路徑的長度精確地加1。

如何編寫一個查詢來獲取(在這個例子中)正是3路不重複的節點?

+0

你有自我循環的數據'節點0'上? – MarcoL

+0

我沒有,或者我不知道。你知道我怎麼檢查它?的 – trojek

+0

可能重複的[在兩個節點之間的所有路徑的Neo4j - 不正確anwser(從Neo4j的)](http://stackoverflow.com/questions/21894026/all-paths-between-two-nodes-neo4j-incorrect-anwser-from- neo4j) – jjaderberg

回答

0

您所查詢的是正確的,有可能是數據庫中的一個問題。我複製了你的圖形結構:console.neo4j。運行START n=node(*) RETURN n以獲取節點27和0的ID,然後運行您的查詢。它只返回3個結果。

要檢查是否有節點0循環執行:

START n=node(0) MATCH n-[r]-n RETURN r 
+0

我已在控制檯中檢查過它,並且您是對的。你知道一些將數據從本地數據庫移動到console.neo4j.org的半自動方式來測試我的真實數據庫嗎? – trojek

+0

對不起,我不知道。我添加了一種方法來檢查自我循環的答案。 – CapK

+0

您可以從Neo4j的殼「傾銷」你的數據庫,看http://docs.neo4j.org/chunked/milestone/shell-commands.html#_dumping_the_database_or_a_cypher_result_to_cypher_statements – jjaderberg

相關問題