小编me.*_*me.的帖子

MongoDB聚合:组合两个数组

我将以下类型的文档存储在集合中.

{
  "_id" : "318036:2014010100",
  "data": [
    {"flow": [6, 10, 12], "occupancy": [0.0356, 0.06, 0.0856], time: 0},
    {"flow": [2, 1, 4], "occupancy": [0.01, 0.0056, 0.0422], time: 30},
    ...
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想从流和占用数组中的第一个,第二个,......,第n个值计算聚合值.应保留数组中的顺序.假设我想要计算总和.结果应如下所示:

{
  "_id" : "318036:2014010100",
  "data": [
    {"flow": [6, 10, 12], "occupancy": [0.0356, 0.06, 0.0856], sum: [6.0356, 10.006, 12.00856], time: 0},
    {"flow": [2, 1, 4], "occupancy": [0.01, 0.0056, 0.0422], sum: [2.01, 1.0056, 4.0422], time: 30},
    ...
  ]
}
Run Code Online (Sandbox Code Playgroud)

我试图通过使用聚合框架来解决这个问题,但我当前的方法并没有保留排序并且产生了大量的金额.

db.sens.aggregate([ 
  {$match: {"_id":/^318036:/}}, 
  {$limit: 1}, 
  {$unwind: "$data"}, 
  {$unwind: "$data.flow"}, 
  {$unwind: "$data.occupancy"}, …
Run Code Online (Sandbox Code Playgroud)

mapreduce mongodb mongodb-query aggregation-framework

6
推荐指数
1
解决办法
719
查看次数