在CentOS 7上安装MongoDB的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

简介

MongoDB 是一个免费、开源的面向文档的数据库。它被归类为 NoSQL 数据库,因为它不依赖于传统的基于表的关系数据库结构。相反,它使用具有动态模式的类似 JSON 的文档。与关系数据库不同,MongoDB 在向数据库添加数据之前不需要预定义模式。您可以随时和任意次数地更改模式,而无需设置具有更新后模式的新数据库。

在本教程中,您将在 CentOS 7 服务器上安装 MongoDB 社区版。

先决条件

在按照本教程之前,请确保您拥有:

  • 一个具有非 root sudo 权限的 CentOS 7 服务器。有关指导,请参阅我们的教程《在 CentOS 7 上进行初始服务器设置》。

步骤 1 -- 添加 MongoDB 仓库

mongodb-org 软件包在 CentOS 的默认仓库中不存在。但是,MongoDB 维护了一个专用的仓库。让我们将其添加到我们的服务器上。

使用 vi 编辑器,为 CentOS 的软件包管理实用程序 yum 创建一个 .repo 文件:

command 复制代码
sudo vi /etc/yum.repos.d/mongodb-org.repo

然后,访问 MongoDB 文档的 Red Hat 安装部分,并将最新稳定版本的仓库信息添加到文件中:

复制代码
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

通过按 ESC 键保存文件更改,然后输入 :wq,并按 ENTER 键。

在继续之前,您应该验证 MongoDB 仓库是否存在于 yum 实用程序中。repolist 命令显示已启用的仓库列表:

command 复制代码
yum repolist
复制代码
. . .
repo id                          repo name
base/7/x86_64                    CentOS-7 - Base
extras/7/x86_64                  CentOS-7 - Extras
mongodb-org-6.0/7/x86_64         MongoDB Repository
updates/7/x86_64                 CentOS-7 - Updates
. . .

有了 MongoDB Repository,您可以继续进行安装。

步骤 2 -- 安装 MongoDB

您可以使用 yum 实用程序从第三方仓库安装 mongodb-org 软件包。

command 复制代码
sudo yum install mongodb-org

会有两个 Is this ok [y/N]: 提示。第一个允许安装 MongoDB 软件包,第二个导入 GPG 密钥。MongoDB 的发布者使用密钥来确认已下载软件包的完整性。在每个提示处,输入 Y,然后按 ENTER 键。

接下来,使用 systemctl 实用程序启动 MongoDB 服务:

command 复制代码
sudo systemctl start mongod

虽然在本教程中我们不会使用它们,但您也可以使用 reloadstop 命令更改 MongoDB 服务的状态。

reload 命令请求 mongod 进程读取配置文件 /etc/mongod.conf,并应用任何更改,而无需重新启动。

command 复制代码
sudo systemctl reload mongod

stop 命令停止所有正在运行的 mongod 进程。

command 复制代码
sudo systemctl stop mongod

在执行 start 命令后,systemctl 实用程序没有提供结果,但您可以通过使用 tail 命令查看 mongod.log 文件的末尾来检查服务是否已启动:

command 复制代码
sudo tail /var/log/mongodb/mongod.log
复制代码
. . .
[initandlisten] waiting for connections on port 27017

等待连接 的输出确认了 MongoDB 已成功启动,并且您可以使用 MongoDB Shell 访问数据库服务器:

command 复制代码
mongo

要了解如何从 shell 与 MongoDB 交互,您可以查看 db.help() 方法的输出,该方法提供了 db 对象的方法列表。

custom_prefix(>) 复制代码
)>db.help()
复制代码
DB methods:
    db.adminCommand(nameOrDocument) - 切换到 'admin' 数据库,并运行命令 [ 仅调用 db.runCommand(...) ]
    db.auth(username, password)
    db.cloneDatabase(fromhost)
    db.commandHelp(name) 返回命令的帮助
    db.copyDatabase(fromdb, todb, fromhost)
    db.createCollection(name, { size : ..., capped : ..., max : ... } )
    db.createUser(userDocument)
    db.currentOp() 显示数据库中当前正在执行的操作
    db.dropDatabase()
. . .

mongod 进程在后台运行,但使用 exit 命令退出 shell:

custom_prefix(>) 复制代码
)>exit
复制代码
Bye

步骤 3 -- 验证启动

由于一个依赖数据库的应用程序在没有数据库的情况下无法正常运行,我们将确保 MongoDB 守护程序 mongod 会随系统启动而启动。

使用 systemctl 实用程序来检查其启动状态:

command 复制代码
systemctl is-enabled mongod; echo $?

输出为零表示已启用守护程序,这是我们想要的。而输出为一则表示守护程序被禁用,将不会启动。

复制代码
. . .
enabled
0

如果守护程序被禁用,使用 systemctl 实用程序来启用它:

command 复制代码
sudo systemctl enable mongod

现在你已经有一个运行中的 MongoDB 实例,它将在系统重新启动后自动启动。

步骤 4 -- 导入示例数据集(可选)

与其他数据库服务器不同,MongoDB 不会在其 test 数据库中提供数据。由于我们不希望使用生产数据来尝试新软件,我们将从 MongoDB 示例中下载一个样本数据集。这个 JSON 文档包含了一组餐馆数据,我们将用它来练习与 MongoDB 的交互,并避免对敏感数据造成伤害。

首先进入一个可写目录:

command 复制代码
cd /tmp

使用 curl 命令和 MongoDB 的链接来下载 JSON 文件:

command 复制代码
curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json

mongoimport 命令将数据插入到 test 数据库中。--db 标志定义了要使用的数据库,而 --collection 标志指定了信息将被存储在数据库中的位置,--file 标志告诉命令在哪个文件上执行导入操作:

command 复制代码
mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json

输出确认了从 primer-dataset.json 文件导入数据:

复制代码
connected to: localhost
imported 25359 documents

有了样本数据集,你可以对其执行查询。

重新启动 MongoDB Shell:

command 复制代码
mongo

Shell 默认选择 test 数据库,这就是你导入数据的地方。

使用 find() 方法查询 restaurants 集合,以显示数据集中所有餐馆的列表。由于集合包含超过 25,000 条记录,使用可选的 limit() 方法将查询的输出减少到指定数量。此外,pretty() 方法通过换行和缩进使信息更易读。

custom_prefix(>) 复制代码
)>db.restaurants.find().limit(1).pretty()
复制代码
{
    "_id" : ObjectId("57e0443b46af7966d1c8fa68"),
    "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
        },
        {
            "date" : ISODate("2013-09-11T00:00:00Z"),
            "grade" : "A",
            "score" : 6
        },
        {
            "date" : ISODate("2013-01-24T00:00:00Z"),
            "grade" : "A",
            "score" : 10
        },
        {
            "date" : ISODate("2011-11-23T00:00:00Z"),
            "grade" : "A",
            "score" : 9
        },
        {
            "date" : ISODate("2011-03-10T00:00:00Z"),
            "grade" : "B",
            "score" : 14
        }
    ],
    "name" : "Morris Park Bake Shop",
    "restaurant_id" : "30075445"
}

你可以继续使用样本数据集来熟悉 MongoDB,或者使用 db.restaurants.drop() 方法删除它:

custom_prefix(>) 复制代码
)>db.restaurants.drop()

最后,使用 exit 命令退出 Shell:

custom_prefix(>) 复制代码
)>exit
复制代码
Bye

结论

在本教程中,你向 yum 添加了一个第三方存储库,安装了 MongoDB 数据库服务器,导入了一个样本数据集,并执行了一个简单的查询。MongoDB 还有很多其他用途,比如创建带有 collections 的数据库,填充数据库的许多 documents,以及构建强大的应用程序。要了解更多关于 MongoDB 的信息,请查看我们的系列教程《如何使用 MongoDB 管理数据库》或者我们的其他 MongoDB 教程。

相关推荐
cg50179 小时前
Spring Boot 的配置文件
java·linux·spring boot
暮云星影9 小时前
三、FFmpeg学习笔记
linux·ffmpeg
rainFFrain9 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
GalaxyPokemon9 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
mingqian_chu10 小时前
ubuntu中使用安卓模拟器
android·linux·ubuntu
GalaxyPokemon11 小时前
Muduo网络库实现 [十] - EventLoopThreadPool模块
linux·服务器·网络·c++
自由鬼11 小时前
开源虚拟化管理平台Proxmox VE部署超融合
linux·运维·服务器·开源·虚拟化·pve
瞌睡不来12 小时前
(学习总结32)Linux 基础 IO
linux·学习·io
inquisiter12 小时前
UEFI镜像结构布局
linux·spring