在 mongodb 中复制/克隆数据库
用户可以通过多种方式将集合克隆到同一个 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")
- 此命令只能在 mongodb 4.0 或更早版本中运行。
- 它仅将集合克隆到同一数据库。
- 它非常慢。
- 它不复制集合属性和索引。
使用 db.collection.find().foreach() 命令在 mongodb 中复制/克隆数据库
此命令遍历游标,将 javascript 函数应用于每个文档。 foreach()方法的原型形式如下:
db.collection.find().foreach(<function>)
foreach()
方法具有以下参数:
参数 | 类型 | 说明 |
---|---|---|
function | javascript |
一个 javascript 函数,用于从光标应用到每个文档。 签名包括将当前文档传递给处理的单个参数。 |
例子:
db.collection1.find().foreach(
function(docs){
db.collection2.insert(docs);
})
- 此命令只能将集合克隆到同一台服务器。
- 它非常慢。
- 它不复制集合属性和索引。
使用 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 转储所有数据库并在不带任何参数的情况下运行它。 但是,当您这样做时,本地和配置数据库不会包含在转储中。
- 这是一种高速方法。
- 它可以将集合克隆到另一个数据库和服务器。
使用 mongoexport 和 mongoimport 工具在 mongodb 中复制/克隆数据库
mongodb 工具包包括 mongoexport 和 mongoimport 工具。 该工具包可从 mongodb 下载中心下载。
例如,在命令行中运行以下命令:
mongoexport.exe /host: /port: /db:test /collection:collection1 /out:collection1.json
mongoimport.exe /host: /port: /db:test /collection:collection2 /file:collection1.json
- 这是一种快速的方法。
- 它可以将集合克隆到不同的数据库和服务器。
- 它不复制集合属性和索引。
nosql manager for mongodb 的重复收集工具
重复收藏是一项专业功能。 它允许在同一个数据库中非常快速地复制集合。
右键单击 db explorer 中的 collection1 集合,然后在弹出菜单中选择 duplicate collection1 collection 项。
指定目标集合名称、复制参数,然后单击“复制”。
- 这是一种高速方法。
- 它复制集合属性和索引。
- 它只能将集合克隆到同一个数据库。
将集合复制到 nosql manager for mongodb 的另一个数据库工具
将集合复制到另一个数据库是 nosql manager for mongodb pro 的专业功能。 它允许在数据库和服务器之间复制一个或多个集合。
在 db explorer 中右键单击 collection1,然后在弹出菜单中选择 copy collection1 collection to another database 项。
指定目标数据库和其他参数,然后单击执行。
- 这是一种快速的方法。
- 它复制集合属性和索引。
- 它可以将集合复制到另一个数据库和服务器。
- 它可以一次复制多个集合。
- 它不能重命名集合。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
在 mongodb shell 中列出所有数据库
发布时间:2023/05/11 浏览次数:180 分类:mongodb
-
交互式 mongo shell 提供了多个用于获取数据的选项。 本文介绍了在 mongo shell 中列出数据库的几种不同方法。
mongodb 中检查字段包含的字符串
发布时间:2023/05/11 浏览次数:1024 分类:mongodb
-
这篇文章解决了如何在 mongodb 中使用正则表达式来确定字段是否包含字符串。在 mongodb 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。
在 mongodb 中 upsert 更新插入
发布时间:2023/05/11 浏览次数:214 分类:mongodb
-
在 mongodb 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findandmodify() 操作中使用。mongodb 中的 upsert 查询 upsert 采用单个布尔参数。
如何卸载 mongodb
发布时间:2023/05/11 浏览次数:745 分类:mongodb
-
要从您的计算机中卸载 mongodb,您必须先删除 mongodb 服务、数据库和日志文件。使用这篇 mongodb 文章,您将能够从 ubuntu linux、mac 和 windows 卸载 mongodb。 请务必保留数据备份,因为一旦卸载,便
在 mongodb 中存储日期和时间
发布时间:2023/05/11 浏览次数:762 分类:mongodb
-
本 mongodb 教程解释了 date() 对象是什么以及如何使用 date() 方法对集合进行排序。 这也将帮助您找到在 mongodb 中显示和存储日期/时间的最佳方法。
mongodb 按 id 查找
发布时间:2023/05/11 浏览次数:1856 分类:mongodb
-
mongodb 中的 find by id() 函数用于获取与用户提供的 id 相匹配的文档。 如果找不到与指定 id 匹配的文档,则返回空值。
检查 mongodb 服务器是否正在运行
发布时间:2023/05/11 浏览次数:247 分类:mongodb
-
这篇 mongodb 教程将告诉您如何检查是否安装了 mongodb 以及安装的 mongodb 服务器的版本。 它在 windows、ubuntu 和 mac 等不同的操作系统中实现。
mongodb 中的分页
发布时间:2023/05/11 浏览次数:174 分类:mongodb
-
这篇文章将介绍什么是 mongodb 中的分页。 为什么在 mongodb 中需要分页以及在 mongodb 中完成分页的不同方法或方式是什么。
mongodb 从查询开始
发布时间:2023/05/11 浏览次数:186 分类:mongodb
-
在这篇 mongodb 文章中,用户将学习如何使用 $regex 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。