哪个是按日期删除MongoDB文档的最快方法?

时间:2015-07-08 11:55:22

标签: mongodb mongodb-query

在我们公司,我们保留了8天的数据(有100万条记录)。所以我们有一个cronjob,可以删除每天超过8天的文档。现在我们使用已发布字段,此字段未编入索引

完成排除100.000条记录需要15分钟,我们发现此操作太长了。

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

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

使用已编入索引的_id字段会更有利于执行此操作吗? 我们如何使用_id字段来执行相同的操作?

1 个答案:

答案 0 :(得分:6)

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

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

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