MongoDB
介绍
MongoDB是最流行的 NoSQL 文档型数据库之一,因其高写入负载(适用于分析或物联网)和高可用性(易于设置具有自动故障转移功能的副本集)而备受青睐。它还可以轻松地对数据库进行分片,以实现水平扩展,并拥有强大的查询语言,可用于执行聚合、文本搜索或地理空间查询。
MongoDB 数据库不像 SQL 数据库那样将数据存储在行或列的表中,而是将每条记录都存储在一个以 BSON(数据的二进制表示)描述的文档中。应用程序可以 JSON 格式检索这些信息。它支持多种数据类型,包括文档、数组、嵌入式文档和二进制数据。
在 Laravel 中使用 MongoDB 之前,我们建议mongodb/laravel-mongodb
通过 Composer 安装并使用该软件包。该laravel-mongodb
软件包由 MongoDB 官方维护,虽然 PHP 通过 MongoDB 驱动程序原生支持 MongoDB,但Laravel MongoDB软件包提供了与 Eloquent 和其他 Laravel 功能的更丰富的集成:
1composer require mongodb/laravel-mongodb
安装
MongoDB 驱动程序
要连接到 MongoDB 数据库,mongodb
需要 PHP 扩展。如果您使用Laravel Herd进行本地开发或通过 安装了 PHP php.new
,则您的系统上已安装此扩展。但是,如果您需要手动安装此扩展,则可以通过 PECL 进行安装:
1pecl install mongodb
有关安装 MongoDB PHP 扩展的更多信息,请查看MongoDB PHP 扩展安装说明。
启动 MongoDB 服务器
MongoDB 社区服务器可用于在本地运行 MongoDB,并可在 Windows、macOS、Linux 或 Docker 容器中安装。要了解如何安装 MongoDB,请参阅官方的 MongoDB 社区安装指南。
MongoDB 服务器的连接字符串可以在您的.env
文件中设置:
1MONGODB_URI="mongodb://localhost:27017"2MONGODB_DATABASE="laravel_app"
要在云中托管 MongoDB,请考虑使用MongoDB Atlas。要从应用程序本地访问 MongoDB Atlas 集群,您需要在集群的网络设置中将您自己的 IP 地址添加到项目的 IP 访问列表中。
MongoDB Atlas 的连接字符串也可以在您的文件中设置.env
:
1MONGODB_URI="mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority"2MONGODB_DATABASE="laravel_app"
安装 Laravel MongoDB 包
最后,使用 Composer 安装 Laravel MongoDB 包:
1composer require mongodb/laravel-mongodb
如果未安装 PHP 扩展,则此软件包的安装将失败mongodb
。CLI 和 Web 服务器的 PHP 配置可能有所不同,因此请确保在两种配置中都启用了该扩展。
配置
您可以通过应用程序的配置文件配置 MongoDB 连接config/database.php
。在此文件中,添加一个mongodb
使用mongodb
驱动程序的连接:
1'connections' => [2 'mongodb' => [3 'driver' => 'mongodb',4 'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),5 'database' => env('MONGODB_DATABASE', 'laravel_app'),6 ],7],
特征
配置完成后,您可以mongodb
在应用程序中使用包和数据库连接来利用各种强大的功能:
- 使用 Eloquent,可以将模型存储在 MongoDB 集合中。除了标准的 Eloquent 功能外,Laravel MongoDB 软件包还提供了嵌入式关系等附加功能。该软件包还提供对 MongoDB 驱动程序的直接访问,可用于执行原始查询和聚合Pipeline等操作。
- 使用查询生成器编写复杂的查询。
mongodb
缓存驱动程序经过优化,可使用 MongoDB 特性(如 TTL 索引)自动清除过期的缓存条目。- 使用队列驱动程序调度和处理排队的作业
mongodb
。 - 通过Flysystem 的 GridFS 适配器将文件存储在 GridFS 中。
- 大多数使用数据库连接或 Eloquent 的第三方包都可以与 MongoDB 一起使用。
要继续学习如何使用 MongoDB 和 Laravel,请参阅 MongoDB 的快速入门指南。