我有一个用例,需要在指定的时间间隔后删除集合中的一组记录。 例如:每10小时删除10小时以上的记录。
我们尝试了基于id的删除,但发现它很慢。
是否有办法对集合中的记录进行分区,并在Mongo
中根据需要删除分区答案 0 :(得分:2)
MongoDB目前不支持分区,有一个JIRA票据可以将其添加为功能(SERVER-2097)。
一种解决方案是利用多个基于时间的集合,以与分区相似的方式循环集合。通常,当您通常只查询这些基于时间的集合中的一个或几个时,我们会这样做。如果您经常需要读取多个集合,可以添加一些包装器代码来简化它。
还有TTL Indexes,它利用mongod服务器中的后台线程来处理删除。
由于多种原因,_id的删除可能会很慢,并且可能需要在原始问题之外进行更多调查。