【发布时间】:2018-04-20 00:54:22
【问题描述】:
我有 Mongo 文档,其中包含按顺序排列的数组数字值(按天),我想对数组外按字段分组的每个位置的多个文档中的相同值求和。
{"_id" : "1",
"group" : "A",
"value_list" : [1,2,3,4,5,6,7]
},
{"_id" : "2",
"group" : "B",
"value_list" : [10,20,30,40,50,60,70]
},
{"_id" : "3",
"group" : "A",
"value_list" : [1,2,3,4,5,6,7]
},
{"_id" : "4",
"group" : "B",
"value_list" : [10,20,30,40,50,60,70]
}
所以下面列出了我所追求的结果。
上面有两个A组文档,在value_list数组的位置1,两个文档的值都是1。所以1+1=2。位置 2,两个文档中的值都是 2,所以 2+2=4,依此类推。
上面有两个 B 组文档,在 value_list 数组的位置 1,两个文档的值都是 10。所以 10+10=20。位置 2,两个文档中的值都是 20,所以 20+20=40,等等。
{"_id" : "30",
"group" : "A",
"value_list" : [2,4,6,8,10,12,14]
},
{"_id" : "30",
"group" : "A",
"value_list" : [20,40,60,80,100,120,140]
}
我将如何使用 Mongo 脚本执行此操作?谢谢,马特
【问题讨论】:
-
我认为您的意思是“A”和“B”的组,但您只是复制了输出而没有调整值。
-
大声笑,哎呀,是的,我的意思就是这样 - 下一个和 B 组的 id 40 :)
-
是的,我也不认为你真的是指 id "30" 或 "40",除非有一些合乎逻辑的地方来自,而且它不在文档中。 MongoDB 无法输出“任意”键值。 “关键”输出本质上是您分组的内容。但我猜整个聚合概念对你来说是新事物。所以请继续阅读...
-
也对@NeilLunn - 你在那里赚钱。我确实还有一个关于使用 $avg 而不是 $sum 的问题,并且还包括一个字段,其中包含平均使用的每组文档数的值。我也想用于基准测试,而且我通常只在一个组中至少有 10 个文档的情况下进行基准测试。谢谢
标签: mongodb aggregation-framework