2014-12-22 39 views
2

我在我的php應用程序中使用neo4j的休息api,我的要求是從一個節點中找到相關的最近節點「2」,並且節點需要使用關係「road_to」找到相關的節點。遍歷路徑密碼查詢

它就像查找一個位置在一級然後兩個位置的最近位置等。所有位置都使用路徑「road_to」進行連接。

我有暗號查詢找到,但

1)反覆給節點,我不需要。

2)我需要限制節點需要顯示的範圍,在這裏查詢我必須一次又一次給() - [:road_to] - >(),我需要給一些限制各級

start n=node(2) Match (n)-[r:road_to]->()-[:road_to]->()-[:road_to]->(foaf) return r,foaf,n 

任何幫助,將不勝感激.Thanx

回答

1

所以塌陷多跳的最簡單方法是使用有限可變長度的路徑,像這樣:

MATCH (n)-[:road_to*1..3]-(foaf) 
WHERE id(n)=2 
RETURN n, foaf; 

請注意,我擺脫START條款有利於MATCHWHERE id(n)=2。他們基本上是一樣的。這裏運營商[:road_to*1..3]匹配關係的1和3跳之間的關係。把你喜歡的任何限制放在那裏,並在「變量關係」小節中詳細瞭解這種方法here

如果你想找到符合某些標準的最短連接,那麼你可以做的是這樣的:

MATCH (n), (foaf), 
    p = shortestPath((n)-[:road_to*..15]-(foaf)) 
WHERE id(n) = 2 AND foaf.someProperty=someValue 
RETURN p 

這裏,我們結合的路徑,p,所以如果你想裏面的個人關係的路徑,你可以得到他們與其他密碼功能。另外請注意,我正在尋找一個特定foaf,而不是任何。一般來說,當你正在尋找最短路徑時,你正在尋找特定節點的路徑。如果有多個節點通過:road_to鏈接,那麼沒有這個額外的標準,你只需要一跳。

更多關於shortestPath can be found here

+0

Thanx for reply,我試過了,這是我已經得到的,但問題是結果中的重複節點 –