【发布时间】:2023-03-11 08:57:01
【问题描述】:
我收集了超过 1000 万条记录。其中我必须删除 100 万条记录。 我在查询过滤器中使用索引字段。
以下查询需要 150 多秒才能删除 100 万条记录。如何优化以下查询以缩短响应时间。
db.CollectionData.bulkWrite([{ deleteMany: { "filter": { "client_id": "8", "collection_id": "156643", "version": {"$lt": 7}}}}]);
在此先感谢 :)
【问题讨论】:
-
每秒7k条记录的删除速度真的特别慢吗?
-
这是一次运行,还是可能重复的持续过程?如果这是一个重复过程,您可能会考虑更改存储数据的方式以解决此用例。如果您想以任何特定的规律重复此过程,您可以以将要大量删除的数据在集合中组合和隔离的方式存储数据。在复制框架上删除集合是微不足道的,并且很容易(再次假设您有一个副本集)。但此策略基于您在预期删除数据时存储数据的方式。
-
如果您有包含所有这 3 个字段的复合索引,我想它会很快。仅查看索引就足以找到已删除的文档。(如索引查询的覆盖范围)
标签: java mongodb mongoose mongodb-query