Meteor服务器代码尝试按月对文档进行分组。这样就可以得出每个月所有文件的数量
这些文件有createdAt = Date.now();
属性和meteorhacks:聚合
已安装。有什么建议? thx
我考虑过:
1)转换集合添加新属性“MMYYYY:6位数字”并将其分组。
答案 0 :(得分:1)
如果您打算经常汇总,那么您的考虑是好的。如果您在创建文档时在文档中编写了年份和月份字符串,那肯定会更快。请记住,如果修改相应的日期字段,则必须记住保持这些字符串是最新的。
如果你不经常聚会,那么它可能不值得付出努力。只需将您的纪元时间值转换为新的Date对象,并利用聚合管道中的Date聚合运算符。这是一个例子。
var Metrics = new Mongo.Collection('metrics');
Metrics.aggregate([
{$project: {
createdAtDate: { $add: [new Date(0), "$createdAt"] }
}},
{$project : {
year : {$year : "$createdAtDate"},
month : {$month : "$createdAtDate"}
}},
{$group : {
_id : {year : "$year", month : "$month"},
count : {$sum : 1}
}}
]);
如果您使用日期字符串(其中文档字段名为" createdAtString"是MMYYYY),那么您的管道将会是这样的。
var Metrics = new Mongo.Collection('metrics');
Metrics.aggregate([
{$group : {
_id : "$createdAtString",
count : {$sum : 1}
}}
]);