アクティビティの傾向を示すためにグラフに入力する 1 秒あたりの投稿数を見つけるために、データベースにクエリを実行したいと考えていました。私は spring-data-mongo を使用していますが、今のところ、最初のステップは、java から行う方法を心配する前に、mongo シェルでこれを行うことです。
以下に示すように、集計フレームワークを使用しました。
db.post.group({
key:{dateCreated: 1},
cond: { dateCreated:
{
"$gt": new ISODate("2013-08-09T05:51:15Z"),
"$lt": new ISODate("2013-08-09T05:51:20Z")
}
},
reduce: function(cur, result){
result.count += 1
},
initial: {count:0}
})
結果は励みになりますが、ISODate の小数部分が原因のようです。小数で各カウントを 1 にすると、秒ごとにグループ化されるため、カウントが間違っているようです。
[
{
"dateCreated" : ISODate("2013-08-09T05:51:15.332Z"),
"count" : 1
},
{
"dateCreated" : ISODate("2013-08-09T05:51:15.378Z"),
"count" : 1
},
{
"dateCreated" : ISODate("2013-08-09T05:51:15.377Z"),
"count" : 1
},
// many more here
]
以下のような結果のように、秒の部分だけを考慮する方法はありますか:
[
{
"dateCreated" : ISODate("2013-08-09T05:51:15Z"),
"count" : 5
},
{
"dateCreated" : ISODate("2013-08-09T05:51:16Z"),
"count" : 8
},
{
"dateCreated" : ISODate("2013-08-09T05:51:17Z"),
"count" : 3
},
{
"dateCreated" : ISODate("2013-08-09T05:51:18Z"),
"count" : 10
},
{
"dateCreated" : ISODate("2013-08-09T05:51:19Z"),
"count" : 2
},
{
"dateCreated" : ISODate("2013-08-09T05:51:20Z"),
"count" : 13
}
]
これを読んでくれてありがとう。