MongoDB
介绍
MongoDB 是最流行的 NoSQL 文档导向数据库之一,因其高写入负载(适用于分析或物联网)和高可用性(易于设置具有自动故障转移的副本集)而被广泛使用。它还可以轻松地对数据库进行分片以实现水平扩展,并具有强大的查询语言,可以执行聚合、文本搜索或地理空间查询。
与 SQL 数据库将数据存储在行或列的表中不同,MongoDB 数据库中的每条记录都是一个以 BSON(数据的二进制表示形式)描述的文档。然后,应用程序可以以 JSON 格式检索此信息。它支持各种数据类型,包括文档、数组、嵌入式文档和二进制数据。
在 Laravel 中使用 MongoDB 之前,我们建议通过 Composer 安装并使用 mongodb/laravel-mongodb
包。laravel-mongodb
包由 MongoDB 官方维护,虽然 PHP 通过 MongoDB 驱动程序原生支持 MongoDB,但 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://127.0.0.1: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 扩展,则此软件包的安装将失败。CLI 和 Web 服务器之间的 PHP 配置可能不同,因此请确保该扩展在两种配置中都已启用。
配置
你可以通过应用程序的 config/database.php
配置文件配置你的 MongoDB 连接。在此文件中,添加一个使用 mongodb
驱动程序的 mongodb
连接
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('MONGODB_URI', 'mongodb://127.0.0.1:27017'), 'database' => env('MONGODB_DATABASE', 'laravel_app'), ],],
特性
完成配置后,你可以在你的应用程序中使用 mongodb
包和数据库连接来利用各种强大的功能
- 使用 Eloquent,模型可以存储在 MongoDB 集合中。除了标准的 Eloquent 功能外,Laravel MongoDB 包还提供了诸如嵌入式关系等其他功能。该包还提供对 MongoDB 驱动程序的直接访问,可用于执行诸如原始查询和聚合管道之类的操作。
- 使用查询构造器编写复杂的查询。
mongodb
缓存驱动程序 经过优化,可以使用 MongoDB 的 TTL 索引等功能自动清除过期的缓存条目。-
使用
mongodb
队列驱动程序分派和处理排队的作业。 - 通过 适用于 Flysystem 的 GridFS 适配器,将文件存储在 GridFS 中。
- 大多数使用数据库连接或 Eloquent 的第三方包都可以与 MongoDB 一起使用。
要继续学习如何使用 MongoDB 和 Laravel,请参考 MongoDB 的 快速入门指南。