Skip to content

MongoDB

简介

MongoDB 是最流行的 NoSQL 面向文档数据库之一,以其高写入负载(适用于分析或 IoT)和高可用性(易于设置自动故障转移的副本集)而闻名。它还可以轻松对数据库进行分片以实现水平扩展,并拥有强大的查询语言来执行聚合、文本搜索或地理空间查询。

与 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

或者,你也可以使用 PHP 官方扩展安装器 PIE 安装此扩展:

shell
pie install mongodb/mongodb-extension

有关安装 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 扩展,此包的安装将失败。CLI 和 Web 服务器的 PHP 配置可能不同,因此请确保在两种配置中都启用了该扩展。

配置

你可以通过应用的 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 包和数据库连接来利用各种强大的功能:

要继续了解如何使用 MongoDB 和 Laravel,请参阅 MongoDB 的快速入门指南