MongoDB上个月平均值

时间:2017-08-05 23:16:51

标签: mongodb average

我正在寻找在一段时间内计算数据库中几个字段平均值的最佳方法。

我知道通过这个我可以得到最后几天的数据(作为例子)

$where: function () { return Date.now() - this._id.getTimestamp() < (24 * 60 * 60 * 1000)  }}

通过聚合,我可以预测字段的平均值

db.third_graph.aggregate([{$project: {  avgSum: { $avg: "$Sum"}, avgCars: { $avg: "$No of cars" }  } }])

收藏品与此类似

{
_id: ObjectId("58da3f98d8291bf847112a19"),
date: "2017-03-28 12:48:55",
FleetID: "3",
"High value": 100,
"Min value": 31,
"No of cars": 310,
Mean: 71.12,
"Standard Deviation": 14.78,
Sum: 22048,
"Potentian km": 17638.4,
"Minutes*10000": 8.82,
Trips: 2939.73,
"Potential revenue *10000": 1.0584,
"Scales of charge": [
0,
0,
5,
24,
38,
66,
70,
76,
31
]
}

由于大约每15分钟写一次数据,我想做到以下几点:

  • 过去24小时内的平均时间
  • 过去24小时的平均值
  • 上个月/日期范围的平均值

我在SO和网络上发现了一些关于使用项目群组的内容,但是它会导致错误

db.third_graph.aggregate([{ $match: { date: {$gte: ISODate("2017-08-01T00:00:00.0Z"), $lt: ISODate("2017-08-03T00:00:00.0Z")}}, {$group: {_id: "$FleetID", media: { $avg: "$Sum"}}])

任何帮助将不胜感激

编辑: 我推出了这个解决方案:

db.third_graph.aggregate([ {"$match" : { date:{"$gt" : "'`date --date="48 hours ago" -Iseconds`'","$lt" : "'`date -Iseconds`'"}}}, { "$group" : { "_id" : "$FleetID", "average" : { "$avg" : "$Sum" }, "Average Cars" : { "$avg" : "$No of cars" }}}, {$sort:{_id: 1}}])

0 个答案:

没有答案