在 Ubuntu Server 20 中安装和配置 MongoDB

本文将介绍如何在 Ubuntu Server 20 系统上安装和配置 MongoDB,以及如何使用一些基本的命令来操作数据库。

发布于

MongoDB 是一个开源的、跨平台的、面向文档的数据库,它使用 JSON 格式的文档来存储数据,支持灵活的查询和索引,以及分布式的架构和高可用性。MongoDB 是目前最流行的 NoSQL 数据库之一,广泛应用于互联网、物联网、大数据和人工智能等领域。

本文将介绍如何在 Ubuntu Server 20 系统上安装和配置 MongoDB,以及如何使用一些基本的命令来操作数据库。

先决条件

在开始安装和配置 MongoDB 之前,您需要准备以下内容:

  • 一台运行 Ubuntu Server 20 的服务器,已经连接到互联网,并且具有 sudo 权限的用户账户。
  • 一个终端程序,可以通过 SSH 或者本地登录到服务器上。
  • 一个文本编辑器,可以是 vinano 或者其他您喜欢的编辑器。

添加 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 官方文档