我正在进行一个处理自行车共享服务数据的项目。每次行程都有以下信息
> db.bikes.find({bike:9990}).pretty()
{
"_id" : ObjectId("5bb59fd8e9fb374bf0cd5c1c"),
"gender" : "M",
"userAge" : 49,
"bike" : 9990,
"depStation" : 150,
"depDate" : "01/08/2018",
"depHour" : "0:00:13",
"arrvStation" : 179,
"arrvDate" : "01/08/2018",
"arrvHour" : "0:23:38"
}
如何对一天中的每个小时进行分组并计算该特定小时内的出行次数? 我正在尝试这个查询
db.bikes.aggregate(
{
$group:{_id:{$hour: "$depHour"}, trips:{$sum: 1}}
}
)
但是它抛出了这个错误
"ok" : 0,
"errmsg" : "can't convert from BSON type string to Date",
"code" : 16006,
"codeName" : "Location16006"
最佳答案
depDate
和 depHour
字段都是分别表示日期和小时的字符串值,因此无需使用 date operators要将字段转换为日期对象,您所需要做的就是使用 $substrCP
提取小时部分。 ,然后直接将它们用作 $group
_id
中的表达式:
db.bikes.aggregate([
{ '$group': {
'_id': {
'day': '$depDate',
'hour': { '$substrCP': [ '$depHour', 0, 2 ] }
},
'trips': { '$sum': 1 }
} }
])
关于mongodb - 按小时分组并计数 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52639932/