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