Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 数组与x27之间的和;s元素和用Cypher语言创建新数组_Arrays_List_Neo4j_Cypher_Reduce - Fatal编程技术网

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)