我想计算按一系列日期和ID过滤的文档数量。我使用的命令如下所示:
db.collection.aggregate([
{$match:{$and:[{Date: {$gte: ISODate("2014-05-01T00:00:00.000Z"), $lt: ISODate("2014-06-01T00:00:00.000Z")}},
{Id:{$gte:1000, $lt:5000}}]} },
{$group:{ _id:{ID:"$Id"},NMESG:{$sum:1}}}],
{allowDiskUse: true})
该集合有3.7亿个文档,执行时间至少超过24小时...因为它不会返回任何结果。我用一个没有问题的子集测试了代码。 Date和Id被索引为单个字段索引和复合索引。 MongoDB服务器配置为副本集。
编辑:使用此顺序中的字段ID和日期创建复合键。 (ID,日期)
是否有更有效的方法来执行此任务?