mongodb - mongo 重命名集合是如何工作的?

标签 mongodb mongodb-query renaming

我对 mongo 如何重命名集合以及重命名一个非常大的集合需要多少时间感到困惑。

下面是这样的场景,我有一个 mongo 集合,其中包含太多数据(5.88 亿文档),这会减慢查找和插入的速度,因此我创建了一个存档集合来保留所有这些数据。 为此,我正在考虑将旧集合重命名为 oldcollectionname_archive 并从带有 oldcollectionname 的新集合开始。 并计划通过以下命令来执行此操作:

db.oldCollectionName.renameCollection("oldCollectionName_archive")

但我不确定需要多长时间。 我阅读了 mongodocs 和许多关于集合重命名的 stackoverflow 答案,但我可以在任何地方找到有关集合大小是否影响重命名集合所需时间的任何数据。

如果有人对此有任何了解或有任何相同的经历,请提供帮助。

注意:我已经阅读了 mongo 文档和其他 SO 答案中重命名期间可能发生的其他问题。

最佳答案

来自 mongodb 文档 ( https://docs.mongodb.com/manual/reference/command/renameCollection/ )

renameCollection 根据目标命名空间具有不同的性能影响。

如果目标数据库与源数据库相同,则 renameCollection 仅更改命名空间。 这是一个快速的操作。

如果目标数据库与源数据库不同,renameCollection 会将所有文档从源集合复制到目标集合。根据集合的大小,这可能需要更长的时间才能完成。需要对受影响数据库进行独占访问的其他操作将被阻止,直到重命名完成。请参阅一些常见的客户端操作采用哪些锁定?适用于需要独占访问所有数据库的操作。

请注意: * renameCollection 与分片集合不兼容。 * 如果 target 是现有集合的名称并且您未指定 dropTarget: true,则 renameCollection 失败。

关于mongodb - mongo 重命名集合是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35207109/

相关文章:

node.js - Mongoose 的分页结果,带有引用文档的过滤器

java - MongoCollection 到 JSON 数组

javascript - 将逻辑添加到 Mongoose 的 Model ctor 中的最佳实践是什么?

java - MongoDB Java 简单示例失败

mongodb - mongo "$and"子集合运算符

mongodb - 如何计算百分位数?

mongoDB:如何反转 $unwind

java - 使用不同扩展名的文件中的字符串重命名文件

powershell - PowerShell 批量文件重命名中的奇怪行为