在 MongoDB 中复制/克隆集合
在早期版本的MongoDB中,您可以使用该方法复制集合。db.collection.copyTo()
MongoDB已经弃用了这种方法。此外,从版本4.2开始,MongoDB删除了该命令。给定包装,这意味着如果您使用的是MongoDB 4.2或更高版本,则不能使用它们中的任何一个。eval``db.collection.copyTo()``eval
幸运的是,还有另一种方法可以复制MongoDB集合。
检查MongoDB数据库工具
在MongoDB中,您可以使用MongoDB数据库工具克隆集合。具体来说,您可以使用 和 。[mongodump](https://database.guide/back-up-a-mongodb-database-using-mongodump/ "Back Up a MongoDB Database using mongodump")``[mongorestore](https://database.guide/restore-a-mongodb-database-using-mongorestore/ "Restore a MongoDB Database using mongorestore")
MongoDB数据库工具是一套用于使用MongoDB的命令行实用程序。
如果您不确定是否安装了MongoDB数据库工具,请尝试在终端或命令提示符中运行以下命令进行检查:
mongodump --version
mongorestore --version
这专门检查 和 版本。mongodump``mongorestore
如果您没有它们,您可以使用MongoDB网站上的安装说明将MongoDB数据库工具安装到您的系统上。
将集合克隆到同一数据库
您需要从系统的命令行运行(例如,新的终端或命令提示符窗口)。不要从外壳运行它。mongodump``mongorestore``mongo
下面是将集合克隆到同一数据库的代码示例:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'
在这种情况下,我们将集合备份到数据库中,然后像在同一数据库中一样还原它。pets``PetHotel``pets2
这用于创建集合的备份文件,然后以其他名称还原该集合。为此,我们将集合转储到标准输出流中,然后通过管道连接到 .mongodump``mongorestore``mongorestore
以下是每个参数的作用:
| 参数 | 描述 |
|---|---|
--archive |
将输出写入指定的存档文件,如果未指定存档文件,则写入标准输出 ()。在我们的例子中,存档文件未指定,因此它写入了标准输出。stdout |
--db |
指定包含要克隆的集合的数据库。在这种情况下,数据库称为 。PetHotel |
--nsFrom |
指定转储文件中的集合。这是我们要克隆的集合。 |
--nsTo |
指定还原时应使用的集合名称。在我们的例子中,我们称之为.pets2 |
将集合复制到另一个数据库
可以使用相同的技术将集合复制到另一个数据库。在这种情况下,如果您不想更改集合的名称,甚至不需要更改集合的名称。
下面是一个示例:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets'
这与前面的示例非常相似,只是我们的参数指定为目标集合。--nsTo``PetHouse.pets
这意味着克隆的集合将被调用,并且它将位于数据库中(而不是原始数据库)。pets``PetHouse``PetHotel