【问题标题】:How to copy a large number of documents from one collection to another efficiently如何有效地将大量文档从一个集合复制到另一个集合
【发布时间】:2026-01-12 16:25:01
【问题描述】:

我正在为 Mongo db 使用 C# 驱动程序,并且我想实现上限集合的大小调整。我遵循了来自answer 的建议,该建议建议使用临时名称创建一个新集合,从旧集合中复制文档,删除旧集合并重命名新集合。但是我怎样才能有效地做到这一点?当前集合的大小为 700Mb,复制所有数据需要很长时间。 我很可能会在运行服务器的机器上运行这段代码

【问题讨论】:

    标签: c# mongodb


    【解决方案1】:

    调整上限集合的最有效方法仍然是创建一个新集合,复制文档,然后重命名旧集合,并按照引用的answer 中的说明重命名新集合。

    注意:请确保在您切换时没有人插入/更新旧集合。如果您在 db.eval("....") 中运行该代码,它将在运行时锁定服务器。

    【讨论】:

      【解决方案2】:

      但是我怎样才能有效地做到这一点呢?

      你真的不能。之前的回答来自 Scott Hernandez,他是 10gen(MongoDB 背后的公司)的支持工程师。他和地球上的任何人一样了解 MongoDB,所以如果他的答案不起作用,你需要想出一些完全不同的东西

      为了完全不同的东西......

      通过代码尝试解决方案。

      创建一个新的上限集合并修改您的代码以写入新集合,但同时从新集合和旧集合中读取。它会稍微慢一些(你必须在写之前检查两个集合)。但最终您的所有数据都将在新集合中,您可以停止从旧集合中读取。

      【讨论】:

        最近更新 更多