首页 > 解决方案 > 查找在 10 分钟内出现 3 次以上的节点

问题描述

我有一个具有startTime属性的节点列表。我需要确定该列表是否包含 3 个或更多节点startTime,彼此之间的间隔在 10 分钟内。我不需要获取丛中的节点,我只需要一个布尔值来指示这种丛的存在。

我很茫然,我尝试过的一切都失败了,以至于不值得发布它们。

我觉得我错过了一些容易的事情。

标签: neo4jcypher

解决方案


这应该是可行的。

首先,您需要收集 startTimes、订购它们并收集它们。

从那里,您需要获取将包含一组 3 个的相关配对(每个条目,以及在持续时间结束前的条目 2 索引),然后查看该配对的开始时间是否在 10 分钟内发生彼此的。

假设为了示例:具有startTime属性的事件节点,您可以使用此查询来获得所需的结果:

MATCH (e:Event)
WITH e
ORDER BY e.startTime ASC
WITH collect(e.startTime)[1..] as times
WITH times, range(0, size(times) - 3) as indices
RETURN any(index in indices WHERE times[index + 2] <= times[index] + duration({minutes:10}))

推荐阅读