最近因为公司需要做一些小时平均和每日平均的统计,于是去找了下mongodb的系统函数。通过avg和聚合查询实现了结果,但是发现统计的时候mongodb函数$dateToString: { format: "%Y-%m-%d %H", date: "$beginTime" }转化后也还是格林治时间,统计结果跟北京时间差了8小时。于是找了很多资料通过date: { $add: ["$beginTime", 28800000] }函数解决了这个问题,下面分享跟大家,也给自己记录一下以免后忘。
db.user.aggregate(
[{
'$match': {
macAddress: macAddress,
beginTime: {
$gt: beginTimes,
$lte: endTimes
}
}
}, {
'$project': {
'SO2': 1, 'NO2': 1, 'PM10': 1, 'PM25': 1, 'speed': 1, 'direct': 1, 'temp': 1, 'humidity': 1,
'beginTime': { $dateToString: { format: "%Y-%m-%d %H", date: { $add: ["$beginTime", 28800000] } } }//8*60*60*1000
}
},
{
'$group': {
'_id': "$beginTime",
'SO2': { '$avg': '