我正在为 Mongo db 使用 C# 驱动程序,并且我想实现调整上限集合的大小。我遵循了这个答案的建议,该建议建议使用临时名称创建一个新集合,从旧集合中复制文档,删除旧集合并重命名新集合。但是我怎样才能有效地做到这一点?当前集合的大小为 700Mb,复制所有数据需要相当长的时间。我很可能会在运行服务器的机器上运行此代码
问问题
937 次
2 回答
1
调整上限集合大小的最有效方法仍然是创建一个新集合,复制文档,然后重命名旧集合并按照引用的答案中的说明重命名新集合。
注意:只需确保在您切换时没有人插入/更新旧集合。如果您在 db.eval("....") 中运行该代码,它将在运行时锁定服务器。
于 2012-07-27T15:45:18.183 回答
1
但是我怎样才能有效地做到这一点?
你真的不能。之前的回答来自 Scott Hernandez,他是 10gen( MongoDB 背后的公司)的支持工程师。他和地球上的任何人一样了解 MongoDB,所以如果他的答案不起作用,你需要想出一些完全不同的东西。
对于完全不同的东西......
通过代码尝试解决方案。
创建一个新的上限集合并修改您的代码以写入新集合,但同时读取新集合和旧集合。它会稍微慢一些(你必须在写之前检查两个集合)。但最终您的所有数据都将在新集合中,您可以停止从旧集合中读取。
于 2012-07-27T16:31:35.040 回答