如何有效地将大量文档从一个集合复制到另一个集合

时间:2012-07-27 15:07:07

标签: c# mongodb

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

2 个答案:

答案 0 :(得分:1)

调整封顶集合大小的最有效方法仍然是创建一个新集合,复制文档,然后重命名旧集合,并在引用的answer中拼写出新的集合。

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

答案 1 :(得分:1)

  

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

你真的不能。之前的答案来自Scott Hernandez,他是10gen( MongoDB背后的公司)的支持工程师。他知道MongoDB以及地球上的任何人,所以如果他的答案不起作用,你需要提出完全不同的

对于完全不同的事情......

通过代码尝试解决方案。

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