如何在neo4j中获取路径中的最后一个节点?

fer*_*teh 9 path-finding neo4j cypher

在此cypher查询中,将返回与STATUS ="on"属性相互关联的节点之间的最长路径/路径,但我还想获得路径/路径的最后一个节点.

查询:

START n=node(*)
MATCH p=n-[rels:INCLUDE*]->m 
WHERE ALL (rel IN rels 
  WHERE rel.status='on') 
WITH COLLECT(p) AS paths, MAX(length(p)) AS maxLength 
RETURN FILTER(path IN paths 
  WHERE length(path)= maxLength) AS longestPaths
Run Code Online (Sandbox Code Playgroud)

我该如何将其添加到查询中?谢谢.

小智 8

这将给出两个数组.第一个数组是每个路径中的最后一个项,第二个是每个路径:

START n=node(*)
MATCH p=n-[rels:INCLUDE*]->m 
WHERE ALL (rel IN rels 
  WHERE rel.status='on') 
WITH COLLECT(p) AS paths, MAX(length(p)) AS maxLength 
WITH FILTER(path IN paths WHERE length(path)= maxLength) AS longestPaths
RETURN EXTRACT(path IN longestPaths | LAST(path)) as last, longestPaths
Run Code Online (Sandbox Code Playgroud)

  • 把它转换成Neo4j 2.x,从下面的2.x注释中将```````````````````````````````````` 无论如何这对我有用. (2认同)