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