我正在寻找在一段时间内计算数据库中几个字段平均值的最佳方法。
我知道通过这个我可以得到最后几天的数据(作为例子)
$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分钟写一次数据,我想做到以下几点:
我在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}}])