在 MongoDB 中复制同一数据库中的集合
在同一个数据库中复制一个集合是一项了不起的任务。它可以节省时间和精力。本教程演示了如何使用 mongodump
、mongorestore
、aggregate()
和 forEach()
使用 MongoDB 在同一数据库中复制集合。
在 MongoDB 中工作时复制同一数据库中的集合
在旧版本的 MongoDB 中,例如小于 3.0,我们可以使用 copyTo()
方法作为 db.collection_name.copyTo()
来复制集合,但现在已弃用。
eval
也随着 MongoDB 版本 4.2 的开始而被弃用。请注意,db.collection_name.copyTo()
包装了 eval
,这意味着如果我们有 MongoDB 4.2 或更高版本,我们无法使用其中任何一个来复制集合。
在新版本的 MongoDB 中还有其他一些方法可以用来在同一个数据库中复制集合。这里给出了其中的一些。
让我们开始一一学习。
使用 mongodump
和 mongorestore
在 MongoDB 的同一数据库中复制集合
这是使用 MongoDB 数据库工具在同一数据库中克隆/复制集合的最快方法;特别是,我们可以使用 mongodump
和 mongorestore
。数据库工具是一套用于在 MongoDB 中工作的命令行实用程序。
我们可以在 Windows 命令提示符下使用以下命令来检查 mongodump
和 mongorestore
的版本。如果它成功返回相应的版本,则安装数据库工具。
否则,请按照此安装数据库工具。
示例代码:
C:/Users/Dell> mongodump --version
示例代码:
C:/Users/Dell> mongorestore --version
请记住,我们必须从系统的命令行执行 mongodump
和 mongorestore
命令,例如,如果我们使用的是 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
由于使用循环,与上述所有方法相比,此方法是最慢的。它遍历源集合的所有文档,并将它们一一插入到目标集合中。
相关文章
比较 MongoDB 中的字段
发布时间:2023/04/21 浏览次数:51 分类:MongoDB
-
在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。
清除或删除 MongoDB 中的集合
发布时间:2023/04/21 浏览次数:147 分类:MongoDB
-
本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。
向 MongoDB 集合中的每个文档添加新字段
发布时间:2023/04/21 浏览次数:107 分类:MongoDB
-
您将在这篇文章中了解 $set 和 $setOnInsert 操作。 此外,利用这两个运算符,快速描述了向 MongoDB 中的集合添加字段的挑战。
MongoDB 截断集合
发布时间:2023/04/21 浏览次数:178 分类:MongoDB
-
可以根据需要选择两个选项之一来截断下面的集合。 在今天的文章中,我们将学习如何在 MongoDB 中截断集合。
删除 MongoDB 中的重复项
发布时间:2023/04/21 浏览次数:151 分类:MongoDB
-
在本文中,我们将了解如何删除 MongoDB 中的重复条目,并且我们还将看到一个带有适当解释的示例,以使主题更容易理解。
使用 NodeJS 检查 MongoDB 中是否存在集合
发布时间:2023/04/21 浏览次数:194 分类:MongoDB
-
在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。
MongoDB 中的唯一索引
发布时间:2023/04/21 浏览次数:144 分类:MongoDB
-
在这篇教学文章中,您将了解唯一索引、它们是什么以及如何在 MongoDB 中使索引唯一。 此外,还简要详细地解释了使用户的电子邮件在 MongoDB 中唯一。
在 MongoDB 中创建索引
发布时间:2023/04/21 浏览次数:104 分类:MongoDB
-
索引有助于有效解决查询。 如果没有索引,MongoDB 必须遍历集合中的每个文档才能找到与查询匹配的文档。因此,在今天的文章中,我们将学习如何在 MongoDB 中创建索引。
MongoDB 中的稀疏索引
发布时间:2023/04/21 浏览次数:142 分类:MongoDB
-
在本文中,我们将讨论 MongoDB 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。