Arrays 数组与x27之间的和;s元素和用Cypher语言创建新数组
我需要将数组中的一个元素与前面的元素求和,然后用这些元素创建一个新数组。 现在我以手动方式使用此代码:Arrays 数组与x27之间的和;s元素和用Cypher语言创建新数组,arrays,list,neo4j,cypher,reduce,Arrays,List,Neo4j,Cypher,Reduce,我需要将数组中的一个元素与前面的元素求和,然后用这些元素创建一个新数组。 现在我以手动方式使用此代码: 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], ca
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具有以下功能:
WITH [12,28,74,45] AS cap
RETURN reduce(x = 0, v IN cap | x + v)
// 159
您还可以利用:
更新
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)
结果:
╒═══════════════════════╕
│"collect(sum)" │
╞═══════════════════════╡
│[12.0,52.0,154.0,273.0]│
└───────────────────────┘
谢谢,我用这种方式在我的数据库上进行了尝试,它正在工作:
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)
按照你的例子,我需要一个新的数组[12,12+28,12+28+74,12+28+74+45]
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)