2012-07-27 75 views
1

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

回答

1

调整封顶集合大小的最有效方法仍然是创建一个新文档,将文档复制过来,然后重命名旧集合和如引用的answer中所述重新命名新的。

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

1

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

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

完全不同的东西...

尝试通过代码的解决方案。

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

相关问题