从Cypher查询中获取路径长度

pYr*_*Yr0 1 database graph list neo4j cypher

所以,假设我有一个像这样的节点列表:

A - > B - > C - > D - > ......

我想将节点F添加到此列表的开头.为了使这种模式复杂化,我可以将该列表中任何节点的引用作为"起始点",我将从中获得起点.例如,我可以给出对节点"C"的引用,并且需要派生一个将返回对A的引用的算法.

我认为这应该可以通过诸如的查询来完成

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

如果我可以按长度对关系进行排序,我可以简单地将最长的路径作为关系中的第一个节点,然后沿着我的快乐方式前进.麻烦的是,我无法弄清楚如何按路径长度排序结果.我认为它一定是可能的,我只是缺少一个小的查询命令.任何接受者?

-pYr0

Lua*_*nne 7

长度是函数:http://docs.neo4j.org/chunked/stable/query-functions-scalar.html#functions-length

START n = node(*), a = node(*)
MATCH p=a -[:LINKED*]-> n
WHERE n.id! = <ID>
RETURN a
ORDER BY length(p) desc
Run Code Online (Sandbox Code Playgroud)

  • 你可能希望`length(p)desc`得到最长的 (2认同)