简介

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

另外,您也可以使用官方的 PHP 扩展安装器 PIE 来安装该扩展:

pie install mongodb/mongodb-extension

若需了解更多有关安装 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 包和数据库连接,从而利用多种强大的功能:

要进一步了解如何使用 MongoDB 和 Laravel,请参阅 MongoDB 的 快速入门指南。