如何在neo4j中获取路径中的最后一个节点? [英] how to get the last node in path in neo4j?

查看:43
本文介绍了如何在neo4j中获取路径中的最后一个节点?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这个密码查询中,与 STATUS="on" 属性有关系的节点之间的最长路径/路径将被返回,但我还想获得路径/路径的最后一个节点.

查询:

START n=node(*)匹配 p=n-[rels:INCLUDE*]->mWHERE ALL (rel IN relsWHERE rel.status='on')WITH COLLECT(p) AS 路径,MAX(length(p)) AS maxLength返回过滤器(路径中的路径WHERE length(path)= maxLength) AS 最长路径

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

解决方案

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

START n=node(*)匹配 p=n-[rels:INCLUDE*]->mWHERE ALL (rel IN relsWHERE rel.status='on')WITH COLLECT(p) AS 路径,MAX(length(p)) AS maxLengthWITH FILTER(path IN paths WHERE length(path)= maxLength) ASlongestPathsRETURN EXTRACT(path INlongestPaths | LAST(path)) 作为最后一个,longestPaths

In this cypher query,the longest path/paths between nodes which have relationship with STATUS="on" property with each other,will be returned,but I want to get also the last node of the path/paths.

query:

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

how should I add it to the query? thanks.

解决方案

This would give two arrays. The first array is the last item in each path, the second is each path:

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

这篇关于如何在neo4j中获取路径中的最后一个节点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆