按日期删除 MongoDB 文档的最快方法是什么?

Which is the fastest way to remove MongoDB documents by Date?

在我们公司,我们保留了八天的数据(大约有一百万条记录。)所以我们有一个 cronjob,每天删除超过八天的文件。现在我们使用 Published 字段,该字段未编入索引

删除 100.000 条记录大约需要 15 分钟,我们发现这个操作太长了。

这是一个查询,其中 'docs' 是一个包含我们不想删除的文档数组的变量。 'theDate' 变量是八天前的日期。

records.remove( { "Published" : { $lte : theDate }, "_id" : { $nin : docs }  }

使用带索引的_id字段来命令做这个操作会不会更好? 我们如何使用 _id 字段来执行相同的操作?

完全放弃 Cron 作业:这是针对 TTL 索引的作业。 http://docs.mongodb.org/manual/core/index-ttl/

使用 expireAfterSeconds: 691200Published 字段上创建 TTL 索引,并观察您的文档在发布 8 天后自动删除。

如果您不想在发布 8 天后不加选择地删除所有文档,请保留您的 Cron 作业并在 Published 字段上创建一个普通索引。