介绍

MongoDB 是最流行的 NoSQL 文档导向数据库之一,因其高写入负载(适用于分析或物联网)和高可用性(易于设置具有自动故障转移的副本集)而受到广泛使用。它还可以轻松对数据库进行分片以实现横向扩展,并具有强大的查询语言用于执行聚合、文本搜索或地理空间查询。 与 SQL 数据库按行或列存储数据不同,MongoDB 数据库中的每条记录都是以 BSON(数据的二进制表示)描述的文档。应用程序可以以 JSON 格式检索这些信息。它支持多种数据类型,包括文档、数组、嵌套文档和二进制数据。 在使用 MongoDB 和 Laravel 之前,我们建议通过 Composer 安装并使用 mongodb/laravel-mongodb 包。laravel-mongodb 包由 MongoDB 官方维护,虽然 PHP 通过 MongoDB 驱动支持 MongoDB,但 Laravel MongoDB 包提供了与 Eloquent 和其他 Laravel 特性更丰富的集成:

  1. composer require mongodb/laravel-mongodb

安装 ​

MongoDB 驱动 ​
要连接到 MongoDB 数据库,需安装 php mongodb PHP 扩展。如果您使用 Laravel Herd 进行本地开发,或者通过 php php.new 安装 PHP,您的系统上已经安装了此扩展。然而,如果您需要手动安装该扩展,可以通过 PECL 进行安装:

  1. pecl install mongodb

有关安装 MongoDB PHP 扩展的更多信息,请查阅 MongoDB PHP 扩展安装说明

启动 MongoDB 服务器 ​

MongoDB Community Server 可用于本地运行 MongoDB,并可在 Windows、macOS、Linux 或作为 Docker 容器上安装。有关如何安装 MongoDB 的详细步骤,请参考 官方 MongoDB Community 安装指南。 MongoDB 服务器的连接字符串可以在 php .env 文件中设置:

  1. MONGODB_URI=### ## "mongodb://localhost:27017"
  2. MONGODB_DATABASE="laravel_app"

对于在云中托管 MongoDB,可以考虑使用 MongoDB Atlas。 要从应用程序本地访问 MongoDB Atlas 集群,您需要在集群的网络设置中 添加您自己的 IP 地址到项目的 IP 访问列表。 MongoDB Atlas 的连接字符串同样可以在 php .env 文件中设置:

  1. MONGODB_URI="mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority"
  2. MONGODB_DATABASE="laravel_app"

安装 Laravel MongoDB 包 ​
最后,使用 Composer 安装 Laravel MongoDB 包:

  1. composer require mongodb/laravel-mongodb

如果未安装 php mongodb PHP 扩展,包的此安装将失败。PHP 配置可能在 CLI 和 Web 服务器之间有所不同,因此请确保在这两种配置中启用该扩展。

配置 ​

您可以通过应用程序的 php config/database.php 配置文件配置 MongoDB 连接。在此文件中,添加一个使用 php mongodb 驱动的 php 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 驱动程序的能力,可以用来执行原始查询和聚合管道等操作。
使用查询构建器编写复杂查询。
mongodb 缓存驱动经过优化,可利用 MongoDB 特性,例如 TTL 索引,自动清除过期的缓存项。
调度和处理队列作业 使用 mongodb 队列驱动。
在 GridFS 中存储文件,通过 适用于 Flysystem 的 GridFS 适配器。
绝大多数使用数据库连接或 Eloquent 的第三方包均可与 MongoDB 一起使用。 要继续学习如何在 Laravel 中使用 MongoDB,请参考 MongoDB 的 快速入门指南。