首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一系列路径中查找每个段的最大节点

在一系列路径中查找每个段的最大节点
EN

Stack Overflow用户
提问于 2020-02-24 14:42:23
回答 2查看 29关注 0票数 0

我正在尝试根据我想要的长链中的头部和尾部来划分不同的短链,并在短链中找到最大持续时间。

例如..

长链:

NA1 -> NA2 -> NA3 -> NA4 -> NB1 -> NB2 -> NB3 -> NB4 ->...

我想检查每条链中的最大持续时间是否为第二个节点。

NA1 -> NA2 -> NA3 -> NA4

NB1 -> NB2 -> NB3 -> NB4

..。

(n表示节点,A、b和数字是属性,每个节点都有自己的时长)

代码语言:javascript
运行
复制
MATCH p = (A:Task{FROMLOCTYPE:"1"})-[:path*]->(b:Task{TOLOCTYPE:"4"})

WITH reduce(output = [], n IN nodes(p) | output + n ) as tasks

但是我被困在这里,不知道如何检查每个列表中的最大持续时间。

或者在每个列表中执行任何操作。

EN

回答 2

Stack Overflow用户

发布于 2020-02-24 22:06:43

我不知道这是否是你要找的东西,但是这里有一个关于如何找到一个最大值加上它在数组中的位置的例子:

代码语言:javascript
运行
复制
MATCH p = (A:Task{FROMLOCTYPE:"1"})-[:path*]->(b:Task{TOLOCTYPE:"4"})
WITH 
    reduce(
        output = [0, 0, 0], 
        n IN nodes(p) |  
        CASE 
            WHEN output[0] < n.duration THEN [n.duration, output[2], output[2]+1]
            ELSE [output[0], output[1], output[2]+1]
    ) as tasks
 RETURN 
  tasks[0] AS max,
  tasks[1] AS positionInArray

在reduce中,我们创建一个包含3个元素的数组:

在第一个中,我们将存储找到的最大值,在第二个中,存储最大值在数组中的位置,在第三个中,它只是一个增量,用来跟踪我们在数组中的位置,,

这方面的一个很好的读物是:https://blog.armbruster-it.de/2015/03/cypher-fun-finding-the-position-of-an-element-in-an-array/

票数 0
EN

Stack Overflow用户

发布于 2020-02-25 23:27:19

enter image description here

(A:Task{FROMLOCTYPE:"LOAD_PORT"})-:wafer_path*->(b:Task{TOLOCTYPE:"LOAD_PORT"})匹配p=

返回p限制3

这张照片是我的样本数据。

对不起,我之前的描述不够清楚。

我想我的问题应该是当我找到一堆列表的时候。

如何同时搜索这些节点。

有点像如何在二维数组中找到数组的最大值。

我可以根据我想要的分类对节点进行分组。

返回匹配p= (A:Task{FROMLOCTYPE:"LOAD_PORT"})-:wafer_path*->(b:Task{TOLOCTYPE:"LOAD_PORT"})

p

P将返回Neo4j找到的所有P。

P中的节点有它自己的持续时间。

12,18,14,15

12,15,13,14

但是我不知道如何用cypher查询每组的最大持续时间。或检查最大持续时间节点为(任务:{位置:“2”)

再次感谢您的回复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60370717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档