【发布时间】:2013-03-09 18:24:45
【问题描述】:
我正在尝试在 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 之前的最后一位。
所以这是我的问题。这部分是什么?我该怎么做才能在聚合中忽略它?
提前谢谢你。
编辑:我想按日期汇总,所以全年/月/日+小时和分钟。其他的我不管。
编辑:我的数据库在 mongolab,所以我在 2.2
好吧,我用另一种方式做到了:我将所有日期都保存为 0 秒/毫秒。所以我可以保留一个简单的聚合,而不需要更多的代码服务器端,感谢 moment.js
【问题讨论】:
标签: node.js mongodb date aggregation-framework