我正在使用猫鼬。这是我的聚合代码:
var query = { created: { '$gte': Thu Jan 23 2014 00:00:00 GMT+0100 (CET) } }
Model.aggregate([
{ $match: query },
{ $group: {
_id: {
day: { $dayOfMonth: '$created' },
month: { $month: '$created' },
year: { $year: '$created' },
},
amount: { $sum: 1 },
date: { $min: '$created' },
}}],
function(err,result){
console.log(result);
}
);
此代码按created
字段对过滤器模型进行分组,然后按created
字段对它们进行分组(并计数)。结果是:
[ { _id: { day: 24, month: 1, year: 2014 },
amount: 13,
date: Fri Jan 24 2014 06:46:57 GMT+0100 (CET) },
{ _id: { day: 23, month: 1, year: 2014 },
amount: 46,
date: Thu Jan 23 2014 02:52:24 GMT+0100 (CET) },
{ _id: { day: 22, month: 1, year: 2014 },
amount: 1,
date: Thu Jan 23 2014 00:18:18 GMT+0100 (CET) } ]
为什么将Thu Jan 23 2014 00:18:18 GMT+0100
日期归为{ day: 22, month: 1, year: 2014 }
???我想这可能与时区有关?
答案 0 :(得分:0)
如果所有值都来自同一时区(例如CET),并且您希望在该区域中按天计算,则可以为日期值添加秒数(CET为+3600)。 如果您有来自许多时区的值,那么您需要考虑如何汇总结果。
有关该主题和一些可用的解决方法的讨论,请参阅以下Jira票证(SERVER-6310)。