将 JSON 文件导入 MongoDB
本篇文章将讨论如何快速轻松地将所有三种文件格式(JSON、CSV 和 TSV)导入您的 MongoDB 数据库实例。 因此,事不宜迟,让我们开始吧。
什么是 MongoDB
MongoDB 是一个 NoSQL(非关系型)数据库系统。
如果您处理大量数据,将不同的数据拟合到一个紧密的关系模型中是一件痛苦的事情。 SQL 数据库,也称为关系数据库管理系统 (RDBMS),根据预定义的设计将数据存储在行和列中,这对于存储大量数据而言并不理想。
非关系型或 NoSQL 数据库(例如 MongoDB)具有开发人员可以即时更新的动态模式。 由于强调更大的可扩展性和快速搜索,MongoDB 已成为 SQL 数据库的首选解决方案。
MongoDB 的动态模式架构支持快速应用程序更新,同时简化开发人员的编程。
MongoDB 对开发人员来说是有利的,因为它提供了对所有常见语言的官方支持,包括 C、C++、C# 等。此外,net、Go、Java、Node.js、Perl、PHP、Python、Motor、Ruby、Scala、Swift , 和 Mongod 都是编程语言的例子。
这使开发人员能够选择他们喜欢的语言,从而缩短开发时间并减少缺陷。
MongoDB 的主要特性
- 快速查询:MongoDB 查询比典型的关系数据库中的查询快得多(最多快 100 倍)。 这是因为 SQL 数据库以规范化格式存储数据,对单个对象或实体的查询需要连接来自多个表的数据,从而导致处理速度变慢。
- 处理大型非结构化数据:MongoDB 的文档数据架构将所有相关数据保存在一个文档中,使其能够无缝处理大量非结构化数据。 MongoDB 还允许您以对工作负载更敏感的不同方式进行查询。
-
水平扩展:水平可扩展性是大多数 SQL 数据库不足的一个关键领域。 他们要么临时支持它,要么仅支持仍处于起步阶段的技术。
另一方面,MongoDB 允许横向扩展,允许您根据需要添加成本较低的商用服务器。
- 分片:MongoDB 允许您通过将大量数据分布到链接到您的应用程序的多个服务器上来存储大量数据。 当一台服务器无法管理数据大小时,数据会自动分片到另一台服务器。
- 对开发人员来说很容易:MongoDB 的数据结构可以映射到计算机语言的数据结构。 这将减少开发人员学习新语言、配置 MongoDB 和存储数据所需的时间和精力。
mongoimport 命令
在执行 mongoimport 命令之前,所有用户都必须在其计算机上安装 MongoDB 数据库实用程序。
mongoimport 命令可以从 mongoexport 创建的扩展 JSON、CSV 或 TSV 导出中导入内容。 它还允许您从第三方导出程序恢复或导入数据。
在管理 MongoDB 数据库时,这个命令很方便。 它比您为执行导入而开发的任何定制脚本都更快,并且是多线程的。
其他 MongoDB 命令行工具,例如用于 JSON 操作的 jq、用于 CSV 操作的 csvkit,甚至用于从 Internet 上的服务器动态获取数据文件的 curl,都可以与 mongoimport 命令搭配使用。
mongoimport 命令具有以下语法:
`mongoimport` <options> <connection-string> <file>
在扩展格式中,它看起来像这样:
mongoimport --host -u -p --authenticationDatabase --db --colle --drop --file /name_of_file
在以下部分中,我们将介绍使用语法导入不同文件类型(如 JSON、CSV 和 TSV)的多种方式。
mongoimport 命令的应用
在多种情况下,您可能希望引用某些数据或导入数据库中已存在的集合,而不管您的团队开发的 Web 应用程序类型如何。 这些任务包括使用 MongoDB mongoimport 命令从 JSON 或 CSV 文件集合中检索数据。
当您的客户使用您的 Web 应用程序时,MongoDB 可用作后端信息源,而 mongoimport 可能会有所帮助。
与 CSV 或 TSV 的文件格式相比,推荐使用 JSON,因为它既是一种分层数据格式,又对它所编码的数据类型非常精确,可与 MongoDB 文档相媲美。 有了这些知识,我们不会鼓励您每次希望使用 mongoimport 导入数据时都将数据转换为 JSON 格式; 相反,仔细检查它并确定是否要重新组织它。
使用 mongoimport 命令的注意事项
作为预防措施,避免使用 mongoimport 和 mongoexport 进行完整的实例生产备份。 mongoimport 和 mongoexport 命令不能可靠地保留所有丰富的 BSON 数据类型,因为 JSON 只代表 BSON 类型的一个子集。
因此,我们建议使用 mongodump 和 mongorestore,而不是使用 mongodump 和 mongorestore。
下面是 mongo shell 中的插入操作示例,它使用 BSON 类型数据日期和数据编号的 shell 模式表示来演示 mongoexport 和 mongoimport 命令如何使用严格模式表示来维护信息:
use test
db.traffic. insert( { _id: 1, volume: NumberLong ('2980001'), date: new Date() } )
必须引用提供给 data_numberlong 的输入以避免失去准确性。 现在,当您使用 mongoexport 导出数据时,我们得到以下信息:
mongoexport -- db test --collection traffic -- out traffic.json
为了维护类型信息,导出的数据以严格模式表示形式出现:
{ "_id" : 1, "volume" : { "$numberLong" : "2980001" }, "date" : { "$date" : "2014-03-13T13:47:42. 483-0400" } }
使用 mongoimport 命令将数据导入 MongoDB
如前所述,mongoimport 可以导入 JSON、CSV 或 TSV 文件。 为了清晰和简单的导航,我们将从 JSON、CSV 或 TSV 文件导入数据的过程分为三个部分。
在继续这些部分之前,请确保您的 MongoDB 实例已连接到 mongoimport Windows、macOS 或 Ubuntu 应用程序。 虽然有几个选项可以将 mongoimport 连接到您的 MongoDB 数据库,但我们建议使用 –uri 选项,如下所示:
mongoimport --uri 'mongodb+srv: // mycluster-ABCDE.azure.mongodb. net/test?retryWrites=true&w=majority'
--username='USERNAME'
--password='PASSWORD'
如果您不使用 Atlas Deployment,则必须创建自己的 URI。 如果您连接到一台服务器\,您的 URL 将如下所示 - mongodb://your.server。 主持人。 name:port/,如果你运行一个 replicaset\ 并连接到不同的主机名,你的 URI 将如下所示 - mongodb://username:password @host1: port,host2:port/?replicaSet=replicasetname
。
使用 mongoimport 命令将 JSON 文件导入 MongoDB
要从一个集合中导入 JSON 文件,请使用以下代码:
mongoimport --db DB_Name --c collection_ Name --type= json --
file Name-of-the-file-to-import
- DB_Name 表示包含集合 Collection_Name 的数据库的名称。
- type 指定文件类型 JSON(可选字段)。
- 要导入/恢复的 JSON 文件的名称和路径由 name-of-file-to-import 表示。
您也可以将上述代码更紧凑地编写为:
mongoimport -d DB_NAME - c COLLECTION _name --file Name-of-the-file-to-import
如果你想删除任何与你试图创建/导入的集合同名的现有集合,你可以在 mongoimport 命令中使用 –drop 标志。
mongoimport -d DB_NAME -c collect._name --drop --file Name-of-file-to-import
在导入 JSON 数据时,您可以使用 MongoDB mongoimport 命令更改您的主机或端口号。
mongoimport --host 123. 123. 123.1 --port 4567 -d DB _ NAME -c collection _name --file Name-of-the-file-to-import
默认情况下,mongoimport 连接到本地主机上正在运行的 mongo 端口 27017。
使用 mongoimport 命令将 CSV 文件导入 MongoDB
您可以使用 mongoimport 命令将 CSV 文件导入带有标题行选项的集合中。 但是,标题行参数指示 mongoimport 命令不要将第一行作为文档导入,因为它包含字段名称而不是数据。
使用以下代码从 CSV 文件导入集合:
mongoimport --db DB_Name --collection collect._Name --type=csv --
headerline --file=Name-of-file-to-import
- DB_Name 表示包含集合 Collection_Name 的数据库的名称。
- type 指定文件类型 CSV(可选字段)。
- 标题详细说明了 mongoimport 命令将 CSV 文件的第一条记录作为字段名称。
- Name-of-file-to-import 表示要导入/恢复的CSV文件的名称和路径
使用 mongoimport 命令将 TSV 文件导入 MongoDB
与 CSV 文件格式相比,TSV 文件基本相同。 因此,无论您使用 mongoimport Windows 应用程序还是其他应用程序,都可以使用与 CSV 文件相同的方法导入 TSV 文件。
只有一个微小的区别:您可以使用 –type=tsv 选项来告诉 mongoimport 新格式,而不是使用 –type=csv。
相关文章
在 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 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。