クエリを個別のドキュメントとして保存する分析コレクションがあります。過去 1 日 (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 個のドキュメントは 1 日以上さかのぼる可能性があります。を使用することを考えましたが$match
、それを構築する方法がわかりません。何か案は?