0

アクティビティの傾向を示すためにグラフに入力する 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
} 

 ]

これを読んでくれてありがとう。

4

1 に答える 1