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

mid*_*dev 3 mongodb mongodb-query

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

完成排除100.000记录需要15分钟才能完成,我们发现这个操作太长了.

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

records.remove( { "Published" : { $lte : theDate }, "_id" : { $nin : docs }  }
Run Code Online (Sandbox Code Playgroud)

是否更好地使用_id字段(已编入索引)按顺序执行此操作?我们如何使用_id字段来执行相同的操作?

Max*_*oel 6

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

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

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