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

本文关键字:集合 一个 复制 另一个 有效地 文档 | 更新日期: 2024-07-27 06:44:22

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

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

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

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

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

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

对于完全不同的东西

通过代码尝试解决方案。

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