Mongo で日付別にデータを集計しようとしていますが、目的を達成できません。現在、私はこれを使用しています:
db.aggregData.aggregate( { $group: {_id: "$Date".toString(),
tweets: { $sum: "$CrawledTweets"} } },
{ $match:{ _id: {$gte: ISODate("2013-03-19T12:31:00.247Z") }}},
{ $sort: {Date:-1} }
)
これは次のようになります。
"result" : [
{
"_id" : ISODate("2013-03-19T12:50:00.641Z"),
"tweets" : 114
},
{
"_id" : ISODate("2013-03-19T12:45:00.631Z"),
"tweets" : 114
},
{
"_id" : ISODate("2013-03-19T12:55:00.640Z"),
"tweets" : 123
},
{
"_id" : ISODate("2013-03-19T12:40:00.628Z"),
"tweets" : 91
},
{
"_id" : ISODate("2013-03-19T12:31:00.253Z"),
"tweets" : 43
},
{
"_id" : ISODate("2013-03-19T13:20:00.652Z"),
"tweets" : 125
},
{
"_id" : ISODate("2013-03-19T12:31:00.252Z"),
"tweets" : 30
}
],
"ok" : 1
うまくいっているように見えますが、さらに調べてみると、
ISODate("2013-03-19T12:31:00.253Z") と ISODate("2013-03-19T12:31:00.252Z") の繰り返しがあることがわかります。 .
変更されるのは、Z の前の最後のビットだけです。
だからここに私の質問があります。この部分は何ですか? そして、集約でそれを無視するにはどうすればよいですか?
前もって感謝します。
編集:日付で集計したいので、年/月/日全体+時間と分。残りはどうでもいい。
編集:私のdbはmongolabにあるので、2.2を使用しています
さて、私は別の方法でそれを行いました: 私はすべての日付を 0 の秒/ミリ秒で保存します。したがって、moment.js のおかげで、サーバー側のコードを少し増やすことなく、単純な集計を維持できます。