首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Cypher语言实现数组元素和新数组的创建

用Cypher语言实现数组元素和新数组的创建
EN

Stack Overflow用户
提问于 2018-11-08 12:16:14
回答 2查看 93关注 0票数 1

我需要将数组中的一个元素和之前的元素相加,然后用这个元素创建一个新的数组。现在,我以手动方式使用以下代码:

代码语言:javascript
复制
match (a:User) 
with collect(a.capital) as cap 
with cap as cap, length(cap) as len
return cap[0], 
       cap[0]+cap[1], 
       cap[0]+cap[1]+cap[2],
       cap[0]+cap[1]+cap[2]+cap[3], 
       cap[0]+cap[1]+cap[2]+cap[3]+cap[4], 
       cap[0]+cap[1]+cap[2]+cap[3]+cap[4]+cap[5], 
       cap[0]+cap[1]+cap[2]+cap[3]+cap[4]+cap[5]+cap[6], 
       len

但是我需要使用一个查询Cypher来对不同长度的数组执行这个操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-08 12:29:54

Cypher具有reduce函数:

代码语言:javascript
复制
WITH [12,28,74,45] AS cap
RETURN reduce(x = 0, v IN cap | x + v)
// 159

您还可以使用APOC收集函数

代码语言:javascript
复制
WITH [12,28,74,45] AS cap
RETURN apoc.coll.sum(cap)
// 159.0

更新

代码语言:javascript
复制
WITH [12,28,74,45] AS cap
UNWIND range(1, size(cap)) AS i
WITH apoc.coll.sum(cap[0..i-1])
     + apoc.coll.sum(cap[0..i]) AS sum
RETURN collect(sum)

结果:

代码语言:javascript
复制
╒═══════════════════════╕
│"collect(sum)"         │
╞═══════════════════════╡
│[12.0,52.0,154.0,273.0]│
└───────────────────────┘
票数 1
EN

Stack Overflow用户

发布于 2018-11-08 13:46:24

谢谢,我在DB上试过了,它正在工作:

代码语言:javascript
复制
   WITH [12,28,74,45] AS cap
   UNWIND range(1, size(cap)) AS i
   WITH apoc.coll.sum(cap[0..i]) AS sum
   RETURN collect(sum)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53207560

复制
相关文章

相似问题

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