【发布时间】:2022-01-05 11:56:03
【问题描述】:
在具有 2 个副本的 MongoDB 中,我有一个包含超过 1 亿个文档的集合,集合的大小超过 400 GB,索引大小为 150 GB。我必须通过使用我有 TTL 索引的 modifiedOn 字段删除最旧的记录来减小集合的大小。 TTL 索引将删除超过一个月的条目,但我现在必须采取行动。我尝试使用以下方法删除最旧的记录:
db.myCollection.deleteMany({modifiedOn : {"$lt" : new Date(2021, 12, 20}})
和
db.myCollection.remove({modifiedOn : {"$lt" : new Date(2021, 12, 20}})
我试图增加一天,然后执行查询以减少负载,但完成这些查询至少需要 10 个小时。我知道删除集合是最快的选择,但我想保留最新数据。
为什么即使使用modifiedOn 的索引执行这些查询也需要这么长时间,索引是否太大并且更新它需要这么长时间?删除最旧记录有哪些更好的选择?
【问题讨论】:
-
删除这么多记录只需要一些时间。也许您可以每月创建一个系列。
标签: mongodb mongodb-query