迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MongoDB >

在 MongoDB 中复制/克隆数据库

作者:迹忆客 最近更新:2023/05/10 浏览次数:

用户可以通过多种方式将集合克隆到同一个 MongoDB 数据库或克隆到另一个 MongoDB 数据库。 这篇 MongoDB 教程文章将讨论用户如何复制/克隆 MongoDB 中的数据库及其数据。


使用 db.collection.copyTo() 命令在 MongoDB 中复制/克隆数据库

此命令使用服务器端 JavaScript 将所有文档从集合复制到 newCollection。 如果集合不存在,MongoDB 会生成一个新集合。

如果启用了权限,您必须对所有资源执行所有操作才能运行 db.collection.copyTo()。 如果您的业务需要用户运行 db.collection.copyTo(),请构建一个角色,授予对 anyResource 的 anyAction。

不应为其他用户分配此角色。

参数 类型 说明
newCollection string 写入数据的集合名称。

在使用 db.collection.copyTo() 时检查字段类型以验证该操作不会在 BSON 到 JSON 转换期间从文档中删除类型信息。

在内部,db.collection.copyTo() 方法使用 eval 命令。 因此,db.collection.copyTo() 操作采用全局锁定,这会阻止任何其他读取或写入活动,直到 db.collection.copyTo() 操作完成。

复制的文档数由 copyTo() 返回。 如果复制失败,则抛出异常。 因为 copyTo() 在内部使用 eval,所以对 mongod 实例的复制操作将阻止所有其他操作。

例如,以下操作将源集合中的所有文档复制到目标集合中。

db.collection1.copyTo("collection2")
  1. 此命令只能在 MongoDB 4.0 或更早版本中运行。
  2. 它仅将集合克隆到同一数据库。
  3. 它非常慢。
  4. 它不复制集合属性和索引。

使用 db.collection.find().forEach() 命令在 MongoDB 中复制/克隆数据库

此命令遍历游标,将 JavaScript 函数应用于每个文档。 forEach()方法的原型形式如下:

db.collection.find().forEach(<function>)

forEach() 方法具有以下参数:

参数 类型 说明
function JavaScript 一个 JavaScript 函数,用于从光标应用到每个文档。 <function> 签名包括将当前文档传递给处理的单个参数。

例子:

db.collection1.find().forEach(
function(docs){
db.collection2.insert(docs);
})
  1. 此命令只能将集合克隆到同一台服务器。
  2. 它非常慢。
  3. 它不复制集合属性和索引。

使用 mongodump 和 mongorestore 工具在 MongoDB 中复制/克隆数据库

要在早期版本的 MongoDB 中复制数据库,您可以使用 copyDB 命令或其辅助方法 db.copyDatabase()。 但是,MongoDB 随后弃用了这些。

此外,从 4.2 版开始,MongoDB 删除了 copydb 命令和 db.copyDatabase() 方法,因此如果您使用 MongoDB 4.2 或更高版本,您将无法使用它们。 但是,有一种不同的方法来复制 MongoDB 数据库。

MongoDB 数据库工具可用于在 MongoDB 中克隆数据库。 您可以使用命令 mongodump 和 mongorestore。

MongoDB Database Tools 是一组用于处理 MongoDB 的命令行工具。 如果不确定是否安装了 MongoDB 数据库工具,请使用终端或命令提示符检查:

mongodump --version
mongorestore --version

这段代码主要是查找mongodump和mongorestore的版本。 如果您还没有它们,您可以按照 MongoDB 网站上的安装说明在您的 PC 上安装 MongoDB 数据库工具。

您必须使用系统的命令行来运行 mongodump 和 mongorestore(例如,新的终端或命令提示符窗口)。 它不应该从 mongo shell 中执行。

这是数据库克隆代码的示例:

mongodump --archive --db=CatHotel | mongorestore --archive  --nsFrom='CatHotel.*' --nsTo='CatHouse.*'

在这种情况下,我们备份 CatHotel 数据库,然后将其所有集合恢复到名为 CatHouse 的数据库中。 换句话说,我们将 CatHotel 数据库克隆为 CatHouse。

这使用 mongodump 生成数据库备份文件,然后使用 mongorestore 以新名称恢复数据库。 首先,数据库被转储到标准输出流中并通过管道传输到 mongorestore 中。

以下是每个参数的作用:

参数 说明
archive 如果未指定存档文件,它将输出写入指定的存档文件或标准输出(stdout)。 在您的情况下,未指定存档文件,因此它将写入标准输出。
db 它将指定要备份的数据库。 在这种情况下,您将备份 CatHotel 数据库。
nsFrom 会指定转储文件中的集合。 星号通配符 (*) 表示所有集合。
nsTo 指定恢复数据库中需要使用的集合名称。

您还可以使用 mongodump 转储所有数据库并在不带任何参数的情况下运行它。 但是,当您这样做时,本地和配置数据库不会包含在转储中。

  1. 这是一种高速方法。
  2. 它可以将集合克隆到另一个数据库和服务器。

使用 mongoexport 和 mongoimport 工具在 MongoDB 中复制/克隆数据库

MongoDB 工具包包括 mongoexport 和 mongoimport 工具。 该工具包可从 MongoDB 下载中心下载。

例如,在命令行中运行以下命令:

mongoexport.exe /host:<host> /port:<port> /db:test /collection:collection1 /out:collection1.json
mongoimport.exe /host:<host> /port:<port> /db:test /collection:collection2 /file:collection1.json
  1. 这是一种快速的方法。
  2. 它可以将集合克隆到不同的数据库和服务器。
  3. 它不复制集合属性和索引。

NoSQL Manager for MongoDB 的重复收集工具

重复收藏是一项专业功能。 它允许在同一个数据库中非常快速地复制集合。

右键单击 DB Explorer 中的 collection1 集合,然后在弹出菜单中选择 Duplicate collection1 Collection 项。

重复集合

指定目标集合名称、复制参数,然后单击“复制”。

重复集合 1

  1. 这是一种高速方法。
  2. 它复制集合属性和索引。
  3. 它只能将集合克隆到同一个数据库。

将集合复制到 NoSQL Manager for MongoDB 的另一个数据库工具

将集合复制到另一个数据库是 NoSQL Manager for MongoDB Pro 的专业功能。 它允许在数据库和服务器之间复制一个或多个集合。

在 DB Explorer 中右键单击 collection1,然后在弹出菜单中选择 Copy collection1 Collection to another Database 项。

重复集合 2

指定目标数据库和其他参数,然后单击执行。

重复集合 3

  1. 这是一种快速的方法。
  2. 它复制集合属性和索引。
  3. 它可以将集合复制到另一个数据库和服务器。
  4. 它可以一次复制多个集合。
  5. 它不能重命名集合。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 MongoDB Shell 中列出所有数据库

发布时间:2023/05/11 浏览次数:75 分类:MongoDB

交互式 Mongo Shell 提供了多个用于获取数据的选项。 本文介绍了在 Mongo Shell 中列出数据库的几种不同方法。

MongoDB 中检查字段包含的字符串

发布时间:2023/05/11 浏览次数:137 分类:MongoDB

这篇文章解决了如何在 MongoDB 中使用正则表达式来确定字段是否包含字符串。在 MongoDB 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。

在 MongoDB 中 upsert 更新插入

发布时间:2023/05/11 浏览次数:162 分类:MongoDB

在 MongoDB 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findAndModify() 操作中使用。MongoDB 中的 upsert 查询 upsert 采用单个布尔参数。

如何卸载 MongoDB

发布时间:2023/05/11 浏览次数:180 分类:MongoDB

要从您的计算机中卸载 MongoDB,您必须先删除 MongoDB 服务、数据库和日志文件。使用这篇 MongoDB 文章,您将能够从 Ubuntu Linux、Mac 和 Windows 卸载 MongoDB。 请务必保留数据备份,因为一旦卸载,便

在 MongoDB 中存储日期和时间

发布时间:2023/05/11 浏览次数:199 分类:MongoDB

本 MongoDB 教程解释了 Date() 对象是什么以及如何使用 Date() 方法对集合进行排序。 这也将帮助您找到在 MongoDB 中显示和存储日期/时间的最佳方法。

MongoDB 按 ID 查找

发布时间:2023/05/11 浏览次数:139 分类:MongoDB

MongoDB 中的 find by Id() 函数用于获取与用户提供的 id 相匹配的文档。 如果找不到与指定 ID 匹配的文档,则返回空值。

检查 MongoDB 服务器是否正在运行

发布时间:2023/05/11 浏览次数:127 分类:MongoDB

这篇 MongoDB 教程将告诉您如何检查是否安装了 MongoDB 以及安装的 MongoDB 服务器的版本。 它在 Windows、UBUNTU 和 MAC 等不同的操作系统中实现。

MongoDB 中的分页

发布时间:2023/05/11 浏览次数:140 分类:MongoDB

这篇文章将介绍什么是 MongoDB 中的分页。 为什么在 MongoDB 中需要分页以及在 MongoDB 中完成分页的不同方法或方式是什么。

MongoDB 从查询开始

发布时间:2023/05/11 浏览次数:135 分类:MongoDB

在这篇 MongoDB 文章中,用户将学习如何使用 $regex 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便