我有一个分析集合,我将查询存储为单个文档。我想计算过去一天(24 小时)发生的查询次数。这是聚合命令,因为它是:
db.analytics.aggregate([{$group:{_id:{"day":{$dayOfMonth:"$datetime"},"hour":{$hour:"$datetime"}},"count":{$sum:1}}},{$sort:{"_id.day":1,"_id.hour":1}}])
结果如下所示:
.
.
.
{
"_id" : {
"day" : 17,
"hour" : 19
},
"count" : 8
},
{
"_id" : {
"day" : 17,
"hour" : 22
},
"count" : 1
},
{
"_id" : {
"day" : 18,
"hour" : 0
},
"count" : 1
}
.
.
.
最初,我的计划是添加一个$limit
操作来简单地获取最后 24 个结果。这是一个很棒的计划,直到您意识到有几个小时根本没有任何查询。因此,最后 24 个文档可以追溯到不止一天。我想过使用$match
,但我只是不确定如何构建它。有任何想法吗?