在 Ubuntu Server 20 中安装和配置 MongoDB
本文将介绍如何在 Ubuntu Server 20 系统上安装和配置 MongoDB,以及如何使用一些基本的命令来操作数据库。
MongoDB 是一个开源的、跨平台的、面向文档的数据库,它使用 JSON 格式的文档来存储数据,支持灵活的查询和索引,以及分布式的架构和高可用性。MongoDB 是目前最流行的 NoSQL 数据库之一,广泛应用于互联网、物联网、大数据和人工智能等领域。
本文将介绍如何在 Ubuntu Server 20 系统上安装和配置 MongoDB,以及如何使用一些基本的命令来操作数据库。
先决条件
在开始安装和配置 MongoDB 之前,您需要准备以下内容:
- 一台运行 Ubuntu Server 20 的服务器,已经连接到互联网,并且具有
sudo
权限的用户账户。 - 一个终端程序,可以通过 SSH 或者本地登录到服务器上。
- 一个文本编辑器,可以是
vi
、nano
或者其他您喜欢的编辑器。
添加 MongoDB 仓库
由于 Ubuntu Server 20 的官方仓库中没有 MongoDB 的软件包,所以我们需要先添加 MongoDB 的官方仓库,以便于后续的安装和更新。
首先,运行以下命令,导入 MongoDB 的公钥,以便于验证软件包的来源和完整性:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
然后,运行以下命令,创建一个名为 mongodb-org-5.0.list
的文件,保存在 /etc/apt/sources.list.d/
目录下,内容如下:
deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse
这里我们使用的是 MongoDB 5.0 版本的仓库,如果您想要使用其他版本的 MongoDB,可以参考 MongoDB 官方文档 中的说明,修改相应的仓库地址和版本号。
然后,运行以下命令,更新仓库缓存:
sudo apt-get update
安装 MongoDB
接下来,我们可以使用 apt-get
命令来安装 MongoDB 了。运行以下命令,安装 mongodb-org
软件包,以及其依赖的所有软件包:
sudo apt-get install -y mongodb-org
安装完成后,您可以使用以下命令,查看 MongoDB 的版本信息:
mongod --version
您应该看到类似以下的输出:
db version v5.0.3
Build Info: {
"version": "5.0.3",
"gitVersion": "657fea5a61a74d7a79df7aff8e4bcf0bc742b748",
"openSSLVersion": "OpenSSL 1.1.1f 31 Mar 2020",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2004",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
配置 MongoDB
在开始配置 MongoDB 之前,我们需要先启动 MongoDB 的服务。运行以下命令,启动 mongod
服务:
sudo systemctl start mongod
然后,运行以下命令,查看 mongod
服务的状态:
sudo systemctl status mongod
您应该看到类似以下的输出:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2024-01-19 14:25:03 CST; 1min 30s ago
Docs: https://docs.mongodb.org/manual
Main PID: 1234 (mongod)
Memory: 108.2M
CGroup: /system.slice/mongod.service
└─1234 /usr/bin/mongod --config /etc/mongod.conf
Jan 19 14:25:03 ubuntu systemd[1]: Started MongoDB Database Server.
如果您看到 Active: active (running)
,说明 mongod
服务已经成功启动了。
接下来,我们需要为 MongoDB 设置一个初始的管理员账户,以便于后续的登录和管理。运行以下命令,连接到 MongoDB 的 shell:
mongo
您应该看到类似以下的输出:
MongoDB shell version v5.0.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("12345678-1234-1234-1234-123456789012") }
MongoDB server version: 5.0.3
---
The server generated these startup warnings when booting:
2024-01-19T14:25:03.123+0800: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
2024-01-19T14:25:03.456+0800: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted. You can use the `security.authorization` setting in the configuration file to enable authorization. See http://dochub.mongodb.org/core/security
---
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>
在 >
提示符下,运行以下命令,切换到 admin
数据库:
use admin
您应该看到类似以下的输出:
switched to db admin
然后,运行以下命令,创建一个名为 admin
,密码为 password
的管理员账户:
db.createUser({user: "admin", pwd: "password", roles: ["root"]})
您应该看到类似以下的输出:
Successfully added user: {
"user" : "admin",
"roles" : [
"root"
]
}
接下来,我们需要修改 MongoDB 的配置文件,以启用身份验证和授权。退出 MongoDB 的 shell,运行以下命令:
exit
您应该看到类似以下的输出:
bye
然后,使用您喜欢的文本编辑器,打开 /etc/mongod.conf
文件,找到以下部分:
#security:
取消注释,并添加以下内容:
security:
authorization: enabled
保存并关闭文件,然后运行以下命令,重启 mongod
服务:
sudo systemctl restart mongod
至此,您已经完成了 MongoDB 的安装和配置,接下来,我们将介绍如何使用一些基本的命令来操作数据库。
操作 MongoDB
在操作 MongoDB 之前,我们需要先登录到 MongoDB 的 shell。运行以下命令,使用刚才创建的管理员账户登录:
mongo -u admin -p password --authenticationDatabase admin
您应该看到类似以下的输出:
MongoDB shell version v5.0.3
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
...
创建和切换数据库
在 MongoDB 中,您可以使用 use
命令来创建或者切换数据库。例如,如果您想要创建或者切换到一个名为 test
的数据库,您可以运行以下命令:
use test
您应该看到类似以下的输出:
switched to db test
如果您想要查看当前正在使用的数据库,您可以运行以下命令:
db
您应该看到类似以下的输出:
test
如果您想要查看所有已经存在的数据库,您可以运行以下命令:
show dbs
您应该看到类似以下的输出:
admin 0.000GB
config 0.000GB
local 0.000GB
注意,这里只显示了已经有数据的数据库,如果您刚刚创建了一个空的数据库,它不会出现在这里,直到您向它插入一些数据。
创建和删除集合
在 MongoDB 中,集合(collection)是用来存储文档(document)的容器,每个文档都是一个 JSON 格式的对象,可以包含多个键值对(key-value pair)。
您可以使用 db.createCollection()
方法来创建一个集合,例如,如果您想要创建一个名为 users
的集合,您可以运行以下命令:
db.createCollection("users")
您应该看到类似以下的输出:
{ "ok" : 1 }
如果您想要查看当前数据库中的所有集合,您可以运行以下命令:
show collections
您应该看到类似以下的输出:
users
如果您想要删除一个集合,您可以使用 db.collection.drop()
方法,例如,如果您想要删除 users
集合,您可以运行以下命令:
db.users.drop()
您应该看到类似以下的输出:
true
插入和查询文档
在 MongoDB 中,您可以使用 db.collection.insertOne()
方法来向一个集合中插入一个文档,例如,如果您想要向 users
集合中插入一个名为 Alice
,年龄为 25
的用户,您可以运行以下命令:
db.users.insertOne({name: "Alice", age: 25})
您应该看到类似以下的输出:
{
"acknowledged" : true,
"insertedId" : ObjectId("123456789012345678901234")
}
这里的 insertedId
是 MongoDB 自动生成的一个唯一标识符,用来区分不同的文档。
您可以使用 db.collection.find()
方法来查询一个集合中的文档,例如,如果您想要查询 users
集合中的所有文档,您可以运行以下命令:
db.users.find()
您应该看到类似以下的输出:
{ "_id" : ObjectId("123456789012345678901234"), "name" : "Alice", "age" : 25 }
这里的 _id
是 MongoDB 自动为每个文档添加的一个键,用来存储 insertedId
的值。
您可以使用 db.collection.findOne()
方法来查询一个集合中的第一个匹配的文档,例如,如果您想要查询 users
集合中名为 Alice
的用户,您可以运行以下命令:
db.users.findOne({name: "Alice"})
您应该看到类似以下的输出:
{ "_id" : ObjectId("123456789012345678901234"), "name" : "Alice", "age" : 25 }
您还可以使用一些比较运算符来进行更复杂的查询,例如,如果您想要查询 users
集合中年龄大于 20
的用户,您可以运行以下命令:
db.users.find({age: {$gt: 20}})
您应该看到类似以下的输出:
{ "_id" : ObjectId("123456789012345678901234"), "name" : "Alice", "age" : 25 }
这里的 $gt
是一个比较运算符,表示大于(greater than)。其他的比较运算符还有:
$lt
:小于(less than)$gte
:大于等于(greater than or equal to)$lte
:小于等于(less than or equal to)$eq
:等于(equal to)$ne
:不等于(not equal to)
更新和删除文档
在 MongoDB 中,您可以使用 db.collection.updateOne()
方法来更新一个集合中的一个文档,例如,如果您想要将 users
集合中名为 Alice
的用户的年龄改为 26
,您可以运行以下命令:
db.users.updateOne({name: "Alice"}, {$set: {age: 26}})
您应该看到类似以下的输出:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
这里的 $set
是一个更新运算符,表示设置指定的键值对。其他的更新运算符还有:
$inc
:增加指定的数值$mul
:乘以指定的数值$rename
:重命名指定的键$unset
:删除指定的键$push
:向数组类型的键添加一个元素$pop
:从数组类型的键删除一个元素$pull
:从数组类型的键删除指定的元素
您可以使用 db.collection.updateMany()
方法来更新一个集合中的多个文档,例如,如果您想要将 users
集合中所有年龄大于 20
的用户的年龄加 1
,您可以运行以下命令:
db.users.updateMany({age: {$gt: 20}}, {$inc: {age: 1}})
您应该看到类似以下的输出:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
您可以使用 db.collection.deleteOne()
方法来删除一个集合中的一个文档,例如,如果您想要删除 users
集合中名为 Alice
的用户,您可以运行以下命令:
db.users.deleteOne({name: "Alice"})
您应该看到类似以下的输出:
{ "acknowledged" : true, "deletedCount" : 1 }
您可以使用 db.collection.deleteMany()
方法来删除一个集合中的多个文档,例如,如果您想要删除 users
集合中所有的用户,您可以运行以下命令:
db.users.deleteMany({})
您应该看到类似以下的输出:
{ "acknowledged" : true, "deletedCount" : 1 }
结论
本文介绍了如何在 Ubuntu Server 20 系统上安装和配置 MongoDB,以及如何使用一些基本的命令来操作数据库。MongoDB 是一个功能强大的、灵活的、易于扩展的数据库,适合用于存储和处理大量的非结构化数据。如果您想要了解更多关于 MongoDB 的知识,您可以访问 MongoDB 官方网站 或者 MongoDB 官方文档。