neo4j:获取路径中的最后一个节点
neo4j: Get last node in a path
我是 neo4j 的新手,我设法创建了节点和它们之间的关系。但现在我正在尝试获取最后一个节点。鉴于我有以下图表:
每个节点引用前一天。现在我想从“第 1 天”开始获取最后一个节点(“第 4 天”)以确定它的日期。我怎样才能做到这一点?在我阅读 https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-endnode 之后,我尝试了 MATCH mypath = (b:Days)<-[prevDay]-(endnode) RETURN endNode(prevDay) AS lastDay
。不幸的是,此查询 returns 我第 1 天、第 2 天和第 3 天。最后一天(“第 4 天”)未返回。那么我怎样才能只获得“第 4 天”呢?
您可以使用variable-length relationship patterns例如:
MATCH path=(:Days)<-[:prevDay*]-(lastDay:Days)
WITH lastDay
ORDER BY LENGTH(path) DESC
LIMIT 1
RETURN lastDay
我会这样做:
MATCH path=(:Days {name:'Day 1'})<-[:prevDay*]-(lastDay:Days)
WHERE NOT (lastDay)<-[:prevDay]-()
RETURN lastDay
我是 neo4j 的新手,我设法创建了节点和它们之间的关系。但现在我正在尝试获取最后一个节点。鉴于我有以下图表:
每个节点引用前一天。现在我想从“第 1 天”开始获取最后一个节点(“第 4 天”)以确定它的日期。我怎样才能做到这一点?在我阅读 https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-endnode 之后,我尝试了 MATCH mypath = (b:Days)<-[prevDay]-(endnode) RETURN endNode(prevDay) AS lastDay
。不幸的是,此查询 returns 我第 1 天、第 2 天和第 3 天。最后一天(“第 4 天”)未返回。那么我怎样才能只获得“第 4 天”呢?
您可以使用variable-length relationship patterns例如:
MATCH path=(:Days)<-[:prevDay*]-(lastDay:Days)
WITH lastDay
ORDER BY LENGTH(path) DESC
LIMIT 1
RETURN lastDay
我会这样做:
MATCH path=(:Days {name:'Day 1'})<-[:prevDay*]-(lastDay:Days)
WHERE NOT (lastDay)<-[:prevDay]-()
RETURN lastDay