具有多个项目操作的mongodb聚合

时间:2018-04-26 07:59:39

标签: java mongodb aggregation-framework

我正在进行时间序列应用程序(每个文档都有时间戳和值),需要通过分组到时间段(间隔)来聚合值。为了制作时隙,时间戳被分割然后被覆盖。例如1分钟的插槽:

db.collection.aggregate([
  {$project: {value:1, "timestamp": {$subtract: ["$time", new Date('1970-01-01')]}} },
  {$project: {value:1, "time2": {$divide, ["$timestamp",60000]}}},
  {$project: {value:1, "timeslot": {$floor: "$time2"}}},
  {$group: {_id: "$timeslot", avg: {$avg, "$value"}}}
])

这完成了这项工作,但非常笨拙:3 $项目顺序,值:每次重复1次。有没有办法结合$ subtract,$ divide,$ floor ......?

此外,com.mongodb.client.model.Projections中是否有方便的方法来做到这一点?我使用的是Java mongodb-driver 3.6.2。

0 个答案:

没有答案