繁体   English   中英

从密码查询中获取路径长度

[英]Get Path Length from Cypher Query

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

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

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

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

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

如果我可以按长度对关系进行排序,那么我可以简单地将最长的路径作为关系中的第一个节点,然后沿自己的方式前进。 麻烦的是,我不知道如何按路径长度排序结果。 我认为这是有可能的,我只是缺少一个小的查询命令。 有没有人?

-pYr0

长度就是函数: 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

如果您想成为列表的头,则还可以将其与指向候选节点的可选关系进行匹配。 如果该关系不存在,那么您就在那里。

假设您已获得链中某个节点的ID

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM