介绍
MongoDB 是一个以文档为导向的数据库,它是免费的和开源的。它被归类为 NoSQL 数据库,因为它不依赖于传统的基于表的关系数据库结构。相反,它使用 JSON 类似的文档与动态方案。与关系数据库不同,MongoDB 在您将数据添加到数据库之前不需要预先定义的图表。您可以随时更改图表,而无需设置新的数据库以更新图表。
在本教程中,您将在 CentOS 7 服务器上安装 MongoDB 社区版。
前提条件
在遵循本教程之前,请确保您有
- 一个 CentOS 7 服务器具有非root
sudo
功能的用户. 请参阅我们的教程, CentOS 7 初始服务器设置。
步骤 1 – 添加 MongoDB 存储库
mongodb-org
包不存在于 CentOS 的默认存储库中,但是,MongoDB 保留了一个专用的存储库,让我们把它添加到我们的服务器中。
使用vi
编辑器,为yum
创建一个.repo
文件,这是 CentOS 的包管理工具:
1sudo vi /etc/yum.repos.d/mongodb-org.repo
然后,访问 MongoDB 文档的 Install on Red Hat部分,并将最新稳定版本的存储库信息添加到文件中:
1[label /etc/yum.repos.d/mongodb-org.repo]
2[mongodb-org-6.0]
3name=MongoDB Repository
4baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
5gpgcheck=1
6enabled=1
7gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
将更改保存到文件中,按ESC
键,然后键入:wq
,然后按ENTER
。
在继续之前,您应该检查MongoDB存储库是否存在于yum
实用程序中。
1yum repolist
1[secondary_label Output]
2. . .
3repo id repo name
4base/7/x86_64 CentOS-7 - Base
5extras/7/x86_64 CentOS-7 - Extras
6mongodb-org-6.0/7/x86_64 MongoDB Repository
7updates/7/x86_64 CentOS-7 - Updates
8. . .
有了MongoDB 存储库
,您可以继续安装。
第2步:安装MongoDB
您可以使用yum
实用程序从第三方存储库安装mongodb-org
包。
1sudo yum install mongodb-org
有两个Is this ok [y/N]:
提示,第一个允许安装 MongoDB 包,第二个允许导入 GPG 密钥,MongoDB 发行商签署他们的软件,而yum
则使用一个密钥来确认下载的包的完整性。
接下来,使用systemctl
实用程序启动 MongoDB 服务:
1sudo systemctl start mongod
虽然我们不会在本教程中使用它们,但您也可以通过重新加载
和停止
命令更改MongoDB服务的状态。
重新加载
命令要求mongod
过程读取配置文件/etc/mongod.conf
并应用任何更改,而不需要重新启动。
1sudo systemctl reload mongod
停止
命令停止所有正在运行的mongod
流程。
1sudo systemctl stop mongod
执行开始
命令后,systemctl
实用程序没有提供结果,但您可以通过查看mongod.log
文件的末尾与尾巴
命令来验证该服务的开始:
1sudo tail /var/log/mongodb/mongod.log
1[secondary_label Output]
2. . .
3[initandlisten] waiting for connections on port 27017
输出 **等待连接 ** 确认 MongoDB 已成功启动,您可以使用 MongoDB 壳访问数据库服务器:
1mongo
<$>[注] 注: 当您启动 MongoDB 壳时,您可能会看到这样的警告:
警告:软限制太低,限制设置为4096个进程,64000个文件。
MongoDB 是一个有线的应用程序,它可以启动额外的流程来处理其工作负载。 警告说,为了使 MongoDB 最有效,它被授权旋转的流程数应是它随时可以打开的文件数量的一半。
1sudo vi /etc/security/limits.d/20-nproc.conf
将下列行添加到文件的末尾:
1[label /etc/security/limits.d/20-nproc.conf]
2. . .
3mongod soft nproc 32000
请确保通过按ESC
键保存更改,然后键入:wq
,然后按ENTER
。
若要将新的限制用于 MongoDB,请使用systemctl
实用程序重新启动它:
1sudo systemctl restart mongod
之后,当您连接到 MongoDB 壳时,警告应该停止存在。
要了解如何从壳中与 MongoDB 进行交互,您可以查看 db.help()
方法的输出,该方法为 db
对象提供了方法列表。
1db.help()
1[secondary_label Output]
2DB methods:
3 db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ]
4 db.auth(username, password)
5 db.cloneDatabase(fromhost)
6 db.commandHelp(name) returns the help for the command
7 db.copyDatabase(fromdb, todb, fromhost)
8 db.createCollection(name, { size : ..., capped : ..., max : ... } )
9 db.createUser(userDocument)
10 db.currentOp() displays currently executing operations in the db
11 db.dropDatabase()
12. . .
让mongod
过程在背景中运行,但用exit
命令离开壳:
1exit
1[secondary_label Output]
2Bye
步骤三:验证启动
由于一个基于数据库的应用程序无法在没有数据库的情况下运作,所以我们会确保MongoDB模型mongod
在系统中启动。
使用systemctl
实用程序来检查其启动状态:
1systemctl is-enabled mongod; echo $?
一个零的输出证实了一个启用的戴蒙,我们想要一个,但是,一个证实了一个无法启动的戴蒙,不会启动。
1[secondary_label Output]
2. . .
3enabled
40
如果是残疾的戴蒙,请使用systemctl
实用程序来启用它:
1sudo systemctl enable mongod
您现在有一个运行 MongoDB 实例,该实例将在系统重新启动后自动启动。
步骤 4 – 导入示例数据集(可选)
与其他数据库服务器不同,MongoDB 不会在其测试
数据库中提供数据,因为我们不希望使用生产数据进行新软件实验,所以我们将从 MongoDB 示例中下载样本数据集。
开始移动到可写目录:
1cd /tmp
使用curl
命令和MongoDB的链接来下载JSON文件:
1curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
mongoimport
命令将数据插入到 test 数据库中. --db
旗定义使用哪个数据库,而--collection
旗指明数据库中将存储信息的位置,而--file
旗则告诉命令哪个文件执行导入操作:
1mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json
输出确认从primer-dataset.json
文件中导入数据:
1[secondary_label Output]
2connected to: localhost
3imported 25359 documents
有了样本数据集,您可以对其执行查询。
重新启动 MongoDB 壳:
1mongo
壳默认地选择测试
数据库,这是您导入数据的地方。
使用find()
方法查询 restaurants 集合以显示数据集中的所有餐厅的列表.由于集合包含超过25000个条目,请使用可选的limit()
方法将查询的输出减少到指定数字。
1db.restaurants.find().limit(1).pretty()
1[secondary_label Output]
2{
3 "_id" : ObjectId("57e0443b46af7966d1c8fa68"),
4 "address" : {
5 "building" : "1007",
6 "coord" : [
7 -73.856077,
8 40.848447
9 ],
10 "street" : "Morris Park Ave",
11 "zipcode" : "10462"
12 },
13 "borough" : "Bronx",
14 "cuisine" : "Bakery",
15 "grades" : [
16 {
17 "date" : ISODate("2014-03-03T00:00:00Z"),
18 "grade" : "A",
19 "score" : 2
20 },
21 {
22 "date" : ISODate("2013-09-11T00:00:00Z"),
23 "grade" : "A",
24 "score" : 6
25 },
26 {
27 "date" : ISODate("2013-01-24T00:00:00Z"),
28 "grade" : "A",
29 "score" : 10
30 },
31 {
32 "date" : ISODate("2011-11-23T00:00:00Z"),
33 "grade" : "A",
34 "score" : 9
35 },
36 {
37 "date" : ISODate("2011-03-10T00:00:00Z"),
38 "grade" : "B",
39 "score" : 14
40 }
41 ],
42 "name" : "Morris Park Bake Shop",
43 "restaurant_id" : "30075445"
44}
您可以继续使用样本数据集来熟悉 MongoDB 或使用 db.restaurants.drop()
方法删除它:
1db.restaurants.drop()
最后,用exit
命令结束壳:
1exit
1[secondary_label Output]
2Bye
结论
在本教程中,您已将第三方存储库添加到yum
,安装了MongoDB数据库服务器,导入了样本数据集,并执行了一个简单的查询。您还可以使用MongoDB做更多事情,例如创建数据库使用收藏
,用许多文档
填充数据库,并构建强大的应用程序。 有关MongoDB的更多信息,请参阅我们的系列 如何使用MongoDB管理数据库或我们的其他 MongoDB上的教程。