2013-07-03 148 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)'。 –