如何根据 Neo4j 中的最小日期等条件查找相关项目?



我有一个数据模型,我们有项目和里程碑。一个项目可以有许多里程碑。我想列出每个项目和里程碑的最短日期。

在以下情况下:

project1 -> milestone1 {date: '2019-01-01'}
project1 -> milestone2 {date: '2019-3-03'}
project2 -> milestone3 {date: '2018-01-01'}
project2 -> milestone4 {date: '2019-03-03'}

我希望它返回

project1 -> milestone1 {date: '2019-01-01'}
project2 -> milestone3 {date: '2018-01-01'}

我尝试了一堆疯狂的解决方案,我计算最小里程碑日期,使用"with"传递min_dates,然后根据计算的最小日期再次匹配,但它似乎不稳定且不可靠。

>@user3137190,这是您答案的简洁版本:

MATCH (p:Project)-[:HAS_MILESTONE]->(m:Milestone)
WITH p, m ORDER BY p.name, m.date
RETURN p.name, COLLECT(m)[0].name

在一个不相关的帖子中找到了答案。我不知道我们可以在 with 子句中使用顺序

match (p:Project)-[:HAS_MILESTONE]-(m:Milestone)
with p, m order by p.name, m.date
with p, collect(m) as milestones
with p, milestones[0] as first_milestone
return p.name, first_milestone.name

相关内容

  • 没有找到相关文章

最新更新