如何在 Ubuntu 14.04 上导入和导出 MongoDB 数据库

2023-11-10

MongoDB 是最流行的 NoSQL 数据库引擎之一。它以可扩展、功能强大、可靠且易于使用而闻名。在本文中,我们将向您展示如何导入和导出 MongoDB 数据库。

我们应该明确指出,本文中的导入和导出是指以人类可读的格式处理数据,并与其他软件产品兼容。相比之下,备份和恢复操作创建或使用 MongoDB 特定的二进制数据,这不仅保留数据的一致性和完整性,还保留其特定的 MongoDB 属性。因此,对于迁移,只要源系统和目标系统兼容,通常最好使用备份和恢复。备份、恢复和迁移超出了本文的范围 - 请参阅如何在 Ubuntu 14.04 上备份、恢复和迁移 MongoDB 数据库.

先决条件

在学习本教程之前,请确保您满足以下先决条件:

  • Ubuntu 14.04 小滴
  • 非 root sudo 用户。查看使用 Ubuntu 14.04 进行初始服务器设置了解详情。
  • 使用本文安装和配置 MongoDB如何在 Ubuntu 14.04 上安装 MongoDB.

除非另有说明,本教程中所有需要 root 权限的命令都应以具有 sudo 权限的非 root 用户身份运行。

了解基础知识

在继续阅读本文之前,需要对此事有一些基本的了解。如果您有使用 MySQL 等流行关系数据库系统的经验,您可能会在使用 MongoDB 时发现一些相似之处。

您应该知道的第一件事是 MongoDB 使用json和 bson(二进制 json)格式用于存储其信息。 Json 是人类可读的格式,非常适合导出并最终导入数据。您可以使用任何支持 json 的工具(包括简单的文本编辑器)进一步管理导出的数据。

示例 json 文档如下所示:

json 格式示例
{"address":[
    {"building":"1007", "street":"Park Ave"},
    {"building":"1008", "street":"New Ave"},
]}

Json 使用起来非常方便,但它并不支持 bson 中可用的所有数据类型。这意味着如果使用 json,将会出现所谓的信息“保真度损失”。这就是为什么备份/恢复最好使用二进制 bson,它能够更好地恢复 MongoDB 数据库。

其次,您不必担心显式创建 MongoDB 数据库。如果您指定导入的数据库尚不存在,则会自动创建。集合(数据库表)结构的情况更好。与其他数据库引擎相比,在 MongoDB 中,结构会在第一个文档(数据库行)插入时再次自动创建。

第三,在 MongoDB 中读取或插入大量数据(例如本文的任务)可能会占用大量资源,并消耗大量 CPU、内存和磁盘空间。考虑到 MongoDB 经常用于大型数据库和大数据,这一点至关重要。此问题最简单的解决方案是在夜间运行导出/备份。

第四,如果您有一个繁忙的 MongoDB 服务器,并且信息在数据库导出过程中发生变化,那么信息一致性可能会出现问题。此问题没有简单的解决方案,但在本文末尾,您将看到进一步阅读有关复制的建议。

将信息导入 MongoDB

要了解如何将信息导入 MongoDB,让我们使用有关餐馆的流行示例 MongoDB 数据库。它是 .json 格式,可以使用以下命令下载wget像这样:

  1. wgethttps://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json

下载完成后,您应该有一个名为primer-dataset.json(12 MB 大小)在当前目录中。让我们将该文件中的数据导入到名为的新数据库中newdb并放入一个名为的集合中restaurants。对于导入,我们将使用命令mongoimport像这样:

  1. sudo蒙戈进口公司--db newdb - 收藏餐馆--file底漆数据集.json

结果应该是这样的:

mongoimport 的输出
2016-01-17T14:27:04.806-0500    connected to: localhost
2016-01-17T14:27:07.315-0500    imported 25359 documents

从上面的命令可以看出,已经导入了25359个文档。因为我们没有一个名为newdb,MongoDB自动创建它。

让我们通过连接到新创建的 MongoDB 数据库来验证导入newdb像这样:

  1. sudo蒙戈新数据库

您现在已连接到新创建的newdb数据库实例。请注意,您的提示已更改,表明您已连接到数据库。

使用以下命令计算餐厅集合中的文档数量:

  1. db.restaurants.count()

结果应该显示为25359,正是导入文件的数量。为了更好地检查,您可以从餐馆集合中选择第一个文档,如下所示:

  1. db.restaurants.findOne()

结果应该是这样的:

db.restaurants.findOne() 的输出
{
        "_id" : ObjectId("569beb098106480d3ed99926"),
        "address" : {
                "building" : "1007",
                "coord" : [
                        -73.856077,
                        40.848447
                ],
                "street" : "Morris Park Ave",
                "zipcode" : "10462"
        },
        "borough" : "Bronx",
        "cuisine" : "Bakery",
        "grades" : [
                {
                        "date" : ISODate("2014-03-03T00:00:00Z"),
                        "grade" : "A",
                        "score" : 2
                },
...
        ],
        "name" : "Morris Park Bake Shop",
        "restaurant_id" : "30075445"
}

如此详细的检查可以揭示文档的问题,例如内容、编码等。json 格式使用UTF-8编码,您的导出和导入应该采用该编码。如果您手动编辑 json 文件,请记住这一点。否则,MongoDB 将自动为您处理。

要退出 MongoDB 提示符,请键入exit在提示符下:

  1. exit

您将作为非 root 用户返回到正常的命令行提示符。

从 MongoDB 导出信息

正如我们之前提到的,通过导出 MongoDB 信息,您可以获得包含数据的人类可读文本文件。默认情况下,信息以 json 格式导出,但您也可以导出为 csv(逗号分隔值)。

要从 MongoDB 导出信息,请使用命令mongoexport。它允许您导出非常细粒度的导出,以便您可以指定数据库、集合、字段,甚至可以使用查询进行导出。

一个简单的mongoexport示例是从以下位置导出餐馆集合newdb我们之前导入的数据库。可以这样做:

  1. sudo蒙戈出口公司--db newdb -c餐馆--out新数据库导出.json

在上面的命令中,我们使用--db指定数据库,-c为了收集和--out用于保存数据的文件。

成功的输出mongoexport应该看起来像这样:

mongoexport 的输出
2016-01-20T03:39:00.143-0500    connected to: localhost
2016-01-20T03:39:03.145-0500    exported 25359 records

上面的输出显示已导入 25359 个文档 — 与导入的文档数量相同。

在某些情况下,您可能只需要导出集合的一部分。考虑到restaurants json文件的结构和内容,让我们导出所有满足位于布朗克斯区并提供中国菜的标准的餐厅。如果我们想在连接到 MongoDB 时直接获取这些信息,请再次连接到数据库:

  1. sudo蒙戈新数据库

然后,使用以下查询:

db.restaurants.find( { borough: "Bronx", cuisine: "Chinese" } )

结果显示到终端。要退出 MongoDB 提示符,请键入exit在提示符下:

  1. exit

如果您想从 sudo 命令行导出数据,而不是在连接到数据库时导出数据,请将上一个查询作为mongoexport通过指定它的命令-q像这样的论点:

  1. sudo蒙戈出口公司--db newdb -c餐馆-q "{ 行政区:'布朗克斯',美食:'中式' }" --outBronx_Chinese_retaurants.json

请注意,我们在双引号内使用单引号作为查询条件。如果您使用双引号或特殊字符,例如$你必须用反斜杠转义它们(\)在查询中。

如果导出成功,结果应如下所示:

mongoexport 的输出
2016-01-20T04:16:28.381-0500    connected to: localhost
2016-01-20T04:16:28.461-0500    exported 323 records

上面显示已经导出了323条记录,可以在Bronx_Chinese_retaurants.json我们指定的文件。

结论

本文向您介绍了从 MongoDB 数据库导入和导出信息的基本知识。您可以继续进一步阅读如何在 Ubuntu 14.04 上备份、恢复和迁移 MongoDB 数据库 and 如何设置可扩展的 MongoDB 数据库.

复制不仅对于可扩展性有用,而且对于当前的主题也很重要。复制允许您在从故障中恢复主服务器时,从从 MongoDB 服务器上不间断地继续运行 MongoDB 服务。复制的一部分也是操作日志(oplog),它记录了修改您数据的所有操作。您可以使用此日志,就像在 MySQL 中使用二进制日志一样,在上次备份发生后恢复数据。请记住,备份通常在夜间进行,如果您决定在晚上恢复备份,您将丢失自上次备份以来的所有更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 14.04 上导入和导出 MongoDB 数据库 的相关文章

随机推荐

  • 如何在 CentOS 7 上安装 Nginx

    Nginx 发音engine x是一个免费 开源 高性能的 HTTP 和反向代理服务器 负责处理 Internet 上一些最大网站的负载 Nginx 可以用作独立的 Web 服务器 也可以用作反向代理 for Apache和其他网络服务器
  • 如何在 Debian 10 上安装 Anaconda

    Anaconda 是最流行的 Python R 数据科学和机器学习平台 它用于大规模数据处理 预测分析和科学计算 Anaconda 发行版附带 1 500 多个开源数据包 它还包括 conda 命令行工具和名为 Anaconda Navig
  • 如何在 Linux 中更改用户密码

    在本指南中 我们将解释如何在 Linux 中更改用户密码 我们还将向您展示如何强制用户在下次登录时更改密码 这些说明适用于任何 Linux 发行版 包括 Ubuntu Debian 和 CentOS 介绍 在 Linux 中 您可以使用以下
  • 如何在 Ubuntu 18.04 上安装 Elasticsearch

    Elasticsearch 是一个开源分布式全文搜索和分析引擎 它支持 RESTful 操作 允许您实时存储 搜索和分析大量数据 Elasticsearch 是最流行的搜索引擎之一 为具有复杂搜索要求的应用程序 例如大型电子商务商店和分析应
  • 如何在 CentOS 8 上更改主机名

    通常 主机名是在操作系统安装期间设置的 或者在创建虚拟机时动态分配给虚拟机的 您可能需要更改主机名的原因有很多 最常见的是在创建实例时自动设置主机名 本指南介绍了如何在 CentOS 8 上设置或更改主机名 而无需重新启动系统 先决条件 在
  • 如何在 Debian 9 上安装 VLC 媒体播放器

    VLC 是一个免费的开源多媒体播放器 它是跨平台的 可以播放几乎所有多媒体文件以及 DVD 音频 CD 和不同的流媒体协议 本教程介绍如何在 Debian 9 上安装 VLC 媒体播放器 先决条件 您需要以以下身份登录具有 sudo 访问权
  • 如何在 CentOS 8 上安装和配置 Fail2ban

    所有暴露在互联网上的服务器都面临着恶意软件攻击的风险 例如 如果您有一个连接到公共网络的软件 攻击者可以使用暴力尝试来获取对该应用程序的访问权限 Fail2ban 是一款开源工具 可通过监控服务日志中的恶意活动来帮助保护您的 Linux 计
  • 如何在 Debian 10 Linux 上安装 Apache Cassandra

    Apache Cassandra 是一个免费的开源 NoSQL 数据库 不存在单点故障 它提供线性可扩展性和高可用性 而不会影响性能 许多拥有大型活跃数据集的公司都在使用 Apache Cassandra 包括 Reddit NetFlix
  • 如何在 CentOS 8 上安装 Gitea

    Gitea 是一个用 Go 编写的自托管开源 git 服务器 它配备了存储库文件编辑器 项目问题跟踪 用户管理 通知 内置 wiki 等等 Gitea是一个轻量级应用程序 可以安装在功能较弱的系统上 如果您正在寻找内存占用小得多的 Gitl
  • 如何在Ubuntu 20.04服务器上安装Python 3并设置编程环境

    介绍 对于初学者和经验丰富的开发人员来说 Python 编程语言越来越受欢迎 Python 灵活且用途广泛 在脚本编写 自动化 数据分析 机器学习和后端开发方面具有优势 首次发布于 1991 年 其名称的灵感来自英国喜剧团体 Monty P
  • 如何在 Ubuntu 12.04 上添加交换

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 使用 Kotlin 的 Android 进度条

    在本教程中 我们将使用 Kotlin 在 Android 应用程序中讨论和实现 ProgressBar 什么是进度条 ProgressBar UI 元素用于在应用程序屏幕上显示进度 我们可以使用 ProgressBar 在应用程序屏幕上显示
  • 如何在 Ubuntu 18.04 上设置 OpenVPN 服务器

    本教程的先前版本由以下人员编写贾斯汀 埃林伍德 介绍 当您的智能手机或笔记本电脑连接到不受信任的网络 例如酒店或咖啡店的 WiFi 时 想要安全可靠地访问互联网吗 A虚拟专用网络 VPN 允许您安全地穿越不受信任的网络 就像在专用网络上一样
  • 保护服务器的推荐安全措施

    介绍 大多数时候 您的主要关注点是启动并运行云应用程序 作为设置和部署过程的一部分 在公开可用之前为您的系统和应用程序构建强大而彻底的安全措施非常重要 在部署应用程序之前实施本教程中的安全措施将确保您在基础架构上运行的任何软件都具有安全的基
  • Android TabLayout 和 ViewPager

    在本教程中 我们将在已经实现的 TabLayout 下实现 ViewPagerthis教程 Android TabLayout ViewPager 概述 ViewPagers 用于滑动数据页 它通常与片段结合使用 让我们修改之前教程中的布局
  • 如何在 Apache 上为 Ubuntu 12.04 创建 SSL 证书

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • SQL面试题及答案

    几乎所有面试都会问到SQL面试问题 因为数据库操作在应用中非常常见 SQL 代表结构化查询语言 它是一种用于数据库通信和关系数据库管理的特定领域编程语言 SQL 由用于数据库交互的标准命令组成 例如 SELECT INSERT CREATE
  • 了解 React useMemo Hook

    介绍 随着 React 16 8 的发布 您现在可以在 React 应用程序中使用许多有用的钩子 16 8 中引入的内置 Hooks 之一是useMemo 该挂钩有可能提高应用程序的性能 本文将探讨重新渲染在 React 中的工作原理 为什
  • 了解 SSH 加密和连接过程

    介绍 SSH或安全 shell 是一种安全协议 也是安全管理远程服务器的最常用方法 SSH 使用多种加密技术 提供了一种在两方之间建立加密安全连接 向另一方验证每一方以及来回传递命令和输出的机制 在本指南中 我们将研究 SSH 使用的底层加
  • 如何在 Ubuntu 14.04 上导入和导出 MongoDB 数据库

    MongoDB 是最流行的 NoSQL 数据库引擎之一 它以可扩展 功能强大 可靠且易于使用而闻名 在本文中 我们将向您展示如何导入和导出 MongoDB 数据库 我们应该明确指出 本文中的导入和导出是指以人类可读的格式处理数据 并与其他软