2013-07-03 107 views
0

所以,說我已經有了一個節點列表,像這樣:從Cypher支架查詢獲取路徑長度

甲 - >乙 - 「ç - > d - > ...

我想將節點F添加到此列表的開頭。爲了使這種模式複雜化,我可以參考這個列表上的任何節點作爲「出發點」,從這個出發點我將需要得到起點。例如,我可以給一個參考節點「C」,並需要得到一個算法,將參考返回A.

我想這應該是能夠與查詢完成,如

START n = node(*), a = node(*) 
    MATCH a -[:LINKED*]> n 
    WHERE n.id! = <ID> 
    RETURN a 

如果我可以按照長度對關係進行排序,那麼我可以簡單地將最長的路徑作爲關係中的第一個節點,並沿着我的快樂方式走。麻煩的是,我無法弄清楚如何按路徑長度排序結果。我認爲這一定是可能的,我只是缺少一個小的查詢命令。任何接受者?

-pYr0

回答

1

如果你想在列表的頭部,也可以配合可選的關係,導致到您的候選節點。 如果關係不存在,那你就在那裏。

假設你有鏈某一節點的ID

START n = node(<ID>) 
MATCH() -[r?:LINKED]-> a -[:LINKED*]-> n 
WHERE r = null 
RETURN a 
+0

好點。我認爲效率更高的是匹配 - [:LINKED *] - > n其中不((() - [:LINKED] - > a)'。 –