迹忆客 专注技术分享

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

在 MongoDB 中复制同一数据库中的集合

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

在同一个数据库中复制一个集合是一项了不起的任务。它可以节省时间和精力。本教程演示了如何使用 mongodumpmongorestoreaggregate()forEach() 使用 MongoDB 在同一数据库中复制集合。

在 MongoDB 中工作时复制同一数据库中的集合

在旧版本的 MongoDB 中,例如小于 3.0,我们可以使用 copyTo() 方法作为 db.collection_name.copyTo() 来复制集合,但现在已弃用。

eval 也随着 MongoDB 版本 4.2 的开始而被弃用。请注意,db.collection_name.copyTo() 包装了 eval,这意味着如果我们有 MongoDB 4.2 或更高版本,我们无法使用其中任何一个来复制集合。

在新版本的 MongoDB 中还有其他一些方法可以用来在同一个数据库中复制集合。这里给出了其中的一些。

让我们开始一一学习。

使用 mongodumpmongorestore 在 MongoDB 的同一数据库中复制集合

这是使用 MongoDB 数据库工具在同一数据库中克隆/复制集合的最快方法;特别是,我们可以使用 mongodumpmongorestore。数据库工具是一套用于在 MongoDB 中工作的命令行实用程序。

我们可以在 Windows 命令提示符下使用以下命令来检查 mongodumpmongorestore 的版本。如果它成功返回相应的版本,则安装数据库工具。

否则,请按照安装数据库工具。

示例代码:

C:/Users/Dell> mongodump --version

示例代码:

C:/Users/Dell> mongorestore --version

请记住,我们必须从系统的命令行执行 mongodumpmongorestore 命令,例如,如果我们使用的是 Ubuntu,则从 Windows 操作系统或终端执行命令提示符。永远不要从 mongo shell 运行这个命令。

一旦我们有了用于 MongoDB 的数据库工具,运行以下命令将 teachers 集合转储到同一数据库中:’test`。

示例代码:

C:/Users/Dell> mongodump -d test -c teachers

输出:

2022-05-27T13:05:14.497+0500    writing test.teachers to dump\test\teachers.bson
2022-05-27T13:05:14.503+0500    done dumping test.teachers (3 documents)

上面的输出表明转储文件被写入 dump\test\teachers.bson。所以,我们需要使用下面给出的命令来恢复它。

示例代码:

C:/Users/Dell>mongorestore -d test -c teachers1 --dir=dump/<db>/<sourcecollection.bson>

输出:

2022-05-27T13:05:28.085+0500    checking for collection data in dump\test\teachers.bson
2022-05-27T13:05:28.088+0500    reading metadata for test.teachers1 from dump\test\teachers.metadata.json
2022-05-27T13:05:28.252+0500    restoring test.teachers1 from dump\test\teachers.bson
2022-05-27T13:05:28.312+0500    finished restoring test.teachers1 (3 documents, 0 failures)
2022-05-27T13:05:28.312+0500    no indexes to restore for collection test.teachers1
2022-05-27T13:05:28.313+0500    3 document(s) restored successfully. 0 document(s) failed to restore.

输出将如上所示,这意味着集合已成功复制。如果当前数据库中不存在名为 teachers1 的目标集合,则将创建它。

接下来,打开 mongo shell 并执行以下查询以查看复制的集合是否存在。

示例代码:

> show collections

输出:

teachers
teachers1

或者,我们也可以使用 mongoexport 从数据库 (test) 中导出集合 (teachers),然后使用 mongoimport 将其导入同一数据库中的 teachers2 集合中。

示例代码:

C:/Users/Dell> mongoexport -d test -c teachers | mongoimport -d test -c teachers2 --drop

使用 aggregate() 方法在 MongoDB 的同一数据库中复制集合

示例代码:

> db.teachers.aggregate([{$out: "teachers3"}])

此命令使用 mongo shell 执行。之后,我们使用 show collections 命令查看 teachers3 是否存在。

示例代码:

> show collections

输出:

teachers
teachers1
teachers2
teachers3

我们正在使用聚合管道teachers 集合返回数据并将它们写入指定的集合,此处为 teachers3。如果我们有 MongoDB 4.4 或更高版本,我们可以使用这种方法。

使用 forEach() 循环在 MongoDB 的同一数据库中复制集合

示例代码:

> db.teachers.find().forEach((doc) => {
    db.teachers4.insert(doc)
  })

使用以下查询来确认 teachers4 是否​​位于同一数据库中。

示例代码:

> show collections

输出:

teachers
teachers1
teachers2
teachers3
teachers4

由于使用循环,与上述所有方法相比,此方法是最慢的。它遍历源集合的所有文档,并将它们一一插入到目标集合中。

转载请发邮件至 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 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便