为什么用 Web.Casa 安装 MongoDB 数据库?
无需手动编写 Docker Compose,Web.Casa 自动配置并启动。
Caddy 自动签发和续期 SSL 证书,反向代理开箱即用。
监控、备份、更新、日志——所有应用在一个面板中管理。
MongoDB
MongoDB 是一个开源的面向文档的数据库,旨在存储大规模数据,并允许您高效地处理这些数据。它被归类为 NoSQL(不仅是 SQL)数据库,因为 MongoDB 中数据的存储和检索不是以表格形式进行的。
MongoDB 数据库由 MongoDB.Inc 在 SSPL(服务器端公共许可证)下开发和管理,最初于 2009 年 2 月发布。它还为所有流行语言提供官方驱动程序支持,如 C、C++、C#、.Net、Go、Java、Node.js、Perl、PHP、Python、Motor、Ruby、Scala、Swift、Mongoid。因此,您可以使用这些语言中的任何一种来创建应用程序。如今,许多公司如 Facebook、Nokia、eBay、Adobe、Google 等都使用 MongoDB 来存储其海量数据。
工作原理
现在,我们将看看幕后实际发生了什么。我们知道 MongoDB 是一个数据库服务器,数据存储在这些数据库中。换句话说,MongoDB 环境为您提供了一个服务器,您可以启动它,然后使用 MongoDB 在其上创建多个数据库。 由于其 NoSQL 数据库的特性,数据存储在集合和文档中。因此,数据库、集合和文档之间的关系如下所示:

- MongoDB 数据库包含集合,就像 MYSQL 数据库包含表一样。您可以创建多个数据库和多个集合。
- 现在,在集合内部,我们有文档。这些文档包含我们想要存储在 MongoDB 数据库中的数据,一个集合可以包含多个文档,并且您是无模式的,这意味着一个文档不必与另一个文档相似。
- 文档是通过字段创建的。字段是文档中的键值对,就像关系数据库中的列一样。字段的值可以是任何 BSON 数据类型,如 double、string、boolean 等。
- 存储在 MongoDB 中的数据是 BSON 文档格式。这里,BSON 代表 JSON 文档的二进制表示。换句话说,在后端,MongoDB 服务器将 JSON 数据转换为称为 BSON 的二进制形式,这种 BSON 的存储和查询效率更高。
- 在 MongoDB 文档中,允许存储嵌套数据。这种数据嵌套允许您在数据之间创建复杂的关系,并将它们存储在同一个文档中,与 SQL 相比,这使得数据处理和获取极其高效。在 SQL 中,您需要编写复杂的连接来从表 1 和表 2 中获取数据。BSON 文档的最大大小为 16MB。
注意: 在 MongoDB 服务器中,您可以运行多个数据库。
例如,我们有一个名为 GeeksforGeeks 的数据库。在这个数据库内部,我们有两个集合,在这些集合中我们有两个文档。在这些文档中,我们以字段的形式存储数据。如下图所示:

MongoDB 与 RDBMS 有何不同? MongoDB 和 RDBMS 之间的一些主要区别如下:
| MongoDB | RDBMS |
|---|---|
| 它是一个非关系型、面向文档的数据库。 | 它是一个关系型数据库。 |
| 它适合分层数据存储。 | 它不适合分层数据存储。 |
| 它具有动态模式。 | 它具有预定义的模式。 |
| 它围绕 CAP 定理(一致性、可用性、分区容错性)展开。 | 它围绕 ACID 属性(原子性、一致性、隔离性、持久性)展开。 |
| 在性能方面,它比 RDBMS 快得多。 | 在性能方面,它比 MongoDB 慢。 |
MongoDB 的特性
- 无模式数据库: 这是 MongoDB 提供的一个强大特性。无模式数据库意味着一个集合可以容纳不同类型的文档。换句话说,在 MongoDB 数据库中,单个集合可以容纳多个文档,这些文档可能由不同数量的字段、内容和大小组成。一个文档不必像在关系数据库中那样与另一个文档相似。由于这个很酷的特性,MongoDB 为数据库提供了极大的灵活性。
- 面向文档: 在 MongoDB 中,所有数据都存储在文档中,而不是像 RDBMS 那样存储在表中。在这些文档中,数据以字段(键值对)的形式存储,而不是行和列,这使得数据比 RDBMS 灵活得多。并且每个文档都包含其唯一的对象 ID。
- 索引: 在 MongoDB 数据库中,文档中的每个字段都使用主索引和辅助索引进行索引,这使得从数据池中获取或搜索数据更容易、耗时更少。如果数据没有建立索引,那么数据库将使用指定的查询搜索每个文档,这会花费大量时间且效率不高。
- 可扩展性: MongoDB 借助分片提供水平可扩展性。分片意味着将数据分布在多个服务器上,这里使用分片键将大量数据划分为数据块,这些数据块均匀分布在驻留在许多物理服务器上的分片中。它还可以向正在运行的数据库添加新机器。
- 复制: MongoDB 借助复制提供高可用性和冗余,它创建数据的多个副本并将这些副本发送到不同的服务器,这样如果一台服务器发生故障,则可以从另一台服务器检索数据。
- 聚合: 它允许对分组数据执行操作并获得单个结果或计算结果。它类似于 SQL 的 GROUPBY 子句。它提供三种不同的聚合操作,即聚合管道、map-reduce 函数和单一用途聚合方法。
- 高性能: 由于其可扩展性、索引、复制等特性,MongoDB 的性能非常高,数据持久性也优于其他数据库。
MongoDB 的优点:
- 它是一个无模式的 NoSQL 数据库。在使用 MongoDB 时,您不需要设计数据库的模式。
- 它不支持连接操作。
- 它为文档中的字段提供了极大的灵活性。
- 它包含异构数据。
- 它提供高性能、高可用性、高可扩展性。
- 它高效支持地理空间数据。
- 它是一个面向文档的数据库,数据存储在 BSON 文档中。
- 它还支持多文档 ACID 事务(从 MongoDB 4.0 开始)。
- 它不需要任何 SQL 注入防护。
- 它可以轻松与大数据 Hadoop 集成。
MongoDB 的缺点:
- 它使用高内存进行数据存储。
- 不允许在文档中存储超过 16MB 的数据。
- BSON 中的数据嵌套也有限制,不允许嵌套超过 100 层。
学习 MongoDB
- 文档 - https://docs.mongodb.com/manual/
- 开发者中心 - https://www.mongodb.com/developer/
- MongoDB 大学 - https://learn.mongodb.com
常见问题
MongoDB 数据库 可以安装在 Web.Casa 上吗?
是的,MongoDB 数据库 是 Web.Casa 应用商店中的官方应用。你可以通过 Web.Casa 面板一键安装,无需手动编写 Docker Compose 或配置反向代理。
如何在 Web.Casa 上安装 MongoDB 数据库?
首先通过 curl -fsSL https://get.web.casa | bash 安装 Web.Casa,然后在面板的应用商店中搜索「MongoDB 数据库」,点击安装即可。Web.Casa 会自动配置 Docker 容器、分配端口并设置 Caddy 反向代理。
MongoDB 数据库 在 Web.Casa 上的默认端口是什么?
MongoDB 数据库 在 Web.Casa 上的默认端口为 27017。你可以通过 Web.Casa 的 Caddy 反向代理将其绑定到自定义域名,自动获取 HTTPS 证书。
MongoDB 数据库 安装后可以自动获取 HTTPS 吗?
是的。Web.Casa 基于 Caddy 构建,安装应用后只需绑定域名,Caddy 会自动通过 Let's Encrypt 签发和续期 SSL 证书,全程无需手动配置。
MongoDB 数据库 的数据如何备份?
Web.Casa 内置备份插件,支持将 MongoDB 数据库 的数据自动备份到本地、S3、WebDAV 或 SFTP。你可以设置定时快照和保留策略,确保数据安全。
