mongo如何重命名收藏?

时间:2016-02-04 17:03:08

标签: mongodb mongodb-query renaming

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

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

db.oldCollectionName.renameCollection("oldCollectionName_archive")

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

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

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

2 个答案:

答案 0 :(得分:2)

从mongodb文档(https://docs.mongodb.com/manual/reference/command/renameCollection/

renameCollection对性能的影响取决于目标名称空间。

如果目标数据库与源数据库相同,则renameCollection只会更改名称空间。 这是一种快速操作。

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

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

答案 1 :(得分:1)

我已经使用大约500M文档重命名了多个集合。它在~0时间内完成。 对于MongoDB 3.2和3.4,情况也是如此,我猜也是旧版本。