在我们公司,我们保留了8天的数据(有100万条记录)。所以我们有一个cronjob,可以删除每天超过8天的文档。现在我们使用已发布字段,此字段未编入索引。
完成排除100.000条记录需要15分钟,我们发现此操作太长了。
这是' docs'是一个变量,包含我们不想删除的文档数组。 ' theDate'变量是八天前的日期。
records.remove( { "Published" : { $lte : theDate }, "_id" : { $nin : docs } }
使用已编入索引的_id字段会更有利于执行此操作吗? 我们如何使用_id字段来执行相同的操作?
答案 0 :(得分:6)
完全放弃Cron作业:这是TTL索引的工作。 http://docs.mongodb.org/manual/core/index-ttl/
使用Published
在expireAfterSeconds: 691200
字段上创建TTL索引,并观察您的文档在发布后8天自动删除。
如果您不想在发布后8天不加选择地删除所有文档,请保留您的Cron作业,并在Published
字段上创建一个简单索引。