【发布时间】:2019-01-04 23:22:23
【问题描述】:
我目前面临从数据库中从 100k 文档到 100M 文档的多个集合中删除 100M+ 文档的问题,总共约 300M 文档。此外,每个文档在其他集合中都有引用,这些引用必须被取消。我有一个要删除的所有文档的集合 + ID 列表,目标是尽快删除它们,以便对用户的影响最小。
我目前的方法是通过{ _id: { $in: [] } } 发送要删除的 5k 组,同时以相同的分组方式将更新发送到引用这些文档的所有集合。结果证明这很慢,所以我正在寻找替代方案。
我刚刚阅读了有关批量写入 API 的信息,我想知道这是否是一个更好的解决方案。如果是这样,我很好奇使用它的最有效方法是什么。我是否应该像现在一样继续分组,但在一个批量请求中一次发送多个组?我应该停止在查询中进行分组,而是使用批量请求作为我的组和 5k 个单独的删除/更新命令吗?
【问题讨论】:
-
@user2864740 不确定您的意思?出于速度和成本原因,我们正在归档旧数据以回收数据库中的空间。
-
啊,我以为你只是在扔掉它:>
标签: mongodb