Overview
本指南向您展示如何将 Laravel MongoDB添加到新的 Laravel Web应用程序,连接到MongoDB Atlas上托管的MongoDB 集群,以及对数据执行写入操作。
提示
如果您更愿意使用MongoDB PHP库而不是 Laravel 连接到MongoDB ,请参阅MongoDB PHP库文档中的连接到MongoDB。
Laravel 集成扩展了 Laravel Eloquent 和查询生成器语法,以便在MongoDB中存储和检索数据。
MongoDB Atlas 是完全托管的云数据库服务,旨在托管您的 MongoDB 部署。您可以按照本指南中的步骤创建您的免费(无需信用卡)MongoDB Atlas 部署。
提示
您可以通过克隆laravel-quickstart Github存储库下载完整的 Web应用程序项目。
先决条件
要创建“入门”应用程序,您需要在开发环境中安装以下软件:
终端应用程序和 Shell。对于 MacOS 用户,请使用终端或类似应用程序。对于 Windows 用户,请使用 PowerShell。
下载并安装
完成以下步骤,安装 Laravel 集成依赖项并将其添加到 Laravel Web应用程序。
提示
作为以下安装步骤的替代方法,您可以使用 Laravel Herd 安装MongoDB并为 Laravel MongoDB配置开发环境。有关将 Laravel Herd 与 MongoDB 结合使用的更多信息,请参阅 Herd 文档中的通过 Herd Pro 安装 MongoDB。
安装 MongoDB PHP 扩展
Laravel MongoDB需要MongoDB PHP扩展来管理MongoDB连接和命令。要学习;了解如何安装MongoDB PHP扩展,请参阅PHP库入门指南中的安装MongoDB PHP扩展步骤。
安装 Laravel
确保您安装的 Laravel 版本与 Laravel 集成的版本兼容。要学习;了解兼容的版本,请参阅兼容性页面。
运行以下命令安装 Laravel:
composer global require laravel/installer
安装完成后,该命令会输出以下消息:
Using version ^<version number> for laravel/installer
创建 MongoDB 部署
在 Atlas 上创建免费的 MongoDB 部署
完成MongoDB指南,设立新的Atlas帐户并将示例数据加载到新的免费套餐MongoDB部署。按照 Cloud Deployment 标签页中的说明在云中创建 MongoDB Atlas 部署。
完成这些步骤后,您就在 Atlas 上有了一个新的免费套餐 MongoDB 部署、数据库用户档案以及加载到数据库中的示例数据。
创建连接字符串
您可以通过提供连接 URI(也称为连接字符串)来连接到 MongoDB 部署,它指示驱动程序如何连接到 MongoDB 部署以及连接时的行为方式。
连接字符串包含部署的主机名或 IP 地址和端口、身份验证机制、用户档案(如果适用)以及连接选项。
要连接到未托管在Atlas上的实例或部署,请参阅服务器手册中的连接字符串。
查找MongoDB Atlas连接字符串。
要检索您在上一步中创建的部署的连接字符串,登录您的Atlas帐户并导航到 Database 部分下的 Clusters 页面。单击新部署的 Connect 按钮。

如果您尚未配置数据库用户, MongoDB将提示您创建并配置新用户。
单击 Connect to your application 下的 Drivers 按钮,从 Driver 选择菜单中选择“PHP”,然后从 Version 选择菜单中选择与您安装的版本最匹配的版本。
确保取消选择 View full code sample 选项以仅查看连接字符串。
完成这些步骤后,您将拥有一个包含数据库用户名和密码的连接字符串。
配置 MongoDB 连接
配置应用程序环境变量文件
运行以下 shell 命令,将.env.example文件复制到项目根目录中名为.env的文件中:
cp .env.example .env
打开.env 文件,添加或编辑以下变量和值。将<connection string> 占位符替换为“创建连接字符串”步骤中的连接字符串字符串:
DB_CONNECTION=mongodb DB_URI="<connection string>"
例如,如果连接string为 "mongodb+srv://myUser:myPass123@mongo0.example.com/",则 DB_URI 变量将匹配以下行:
DB_URI="mongodb+srv://myUser:myPass123@mongo0.example.com/"
注意
确保 .env 文件中的这些变量在运行应用程序的shell中未定义。 shell 中的环境变量优先于.env文件中的环境变量。
添加 Laravel 集成提供商
打开bootstrap目录中的providers.php文件,并将以下条目添加到数组中:
MongoDB\Laravel\MongoDBServiceProvider::class,
提示
要学习;了解如何在 Laravel 10.x 中注册提供商,请参阅注册提供程序。
完成这些步骤后,您的 Laravel Web 应用程序已准备好连接到 MongoDB。
查看 MongoDB 数据
生成视图
从应用程序根目录运行以下命令,创建显示电影数据的视图:
php artisan make:view browse_movies
运行该命令后,会输出以下消息:
INFO View [resources/views/browse_movies.blade.php] created successfully.
打开resources/views目录中的browse_movies.blade.php视图文件。 将内容替换为以下代码并保存更改:
<!DOCTYPE html> <html> <head> <title>Browse Movies</title> </head> <body> <h2>Movies</h2> @forelse ($movies as $movie) <p> Title: {{ $movie->title }}<br> Year: {{ $movie->year }}<br> Runtime: {{ $movie->runtime }}<br> IMDB Rating: {{ $movie->imdb['rating'] }}<br> IMDB Votes: {{ $movie->imdb['votes'] }}<br> Plot: {{ $movie->plot }}<br> </p> @empty <p>No results</p> @endforelse </body> </html>
(可选)查看 JSON 文档形式的结果
您可以使用toJson()方法以 JSON 格式显示结果,而不是生成视图和编辑browse_movies.blade.php文件。
将show()函数替换为以下代码以检索结果并将其作为JSON文档返回:
public function show() { $results = Movie::where('runtime', '<', 60) ->where('imdb.rating', '>', 8.5) ->orderBy('imdb.rating', 'desc') ->take(10) ->get(); return $results->toJson(); }
查看电影数据
在网络浏览器中打开URL http://:127.0.0.1 8000/browse_movies。该页面显示电影列表以及每部电影的详细信息。
提示
您可以从应用程序根目录运行php artisan route:list命令来查看可用路由列表。
将数据写入 MongoDB
向 API 发布请求
创建一个名为movie.json的文件并插入以下数据:
{ "title": "The Laravel MongoDB Quick Start", "year": 2024, "runtime": 15, "imdb": { "rating": 9.5, "votes": 1 }, "plot": "This movie entry was created by running through the Laravel MongoDB Quick Start tutorial." }
通过在 shell 中运行以下命令,将 JSON 有效负载作为POST请求发送到端点:
curl -H "Content-Type: application/json" \ --data @movie.json \ http://localhost:8000/api/movies
后续步骤
恭喜您完成入门指南!
完成这些步骤后,您就拥有了一个 Laravel Web应用程序,它使用 Laravel MongoDB连接到您的MongoDB 部署、对示例数据运行查询并呈现检索到的结果。
您可以通过克隆laravel-quickstart Github存储库下载Web应用程序项目。
提示
Tutorials
学习使用Laravel MongoDB构建后端服务教程,了解如何在 Laravel MongoDB应用程序中实现更多增删改查功能。
通过关注 Youtube 上的 使用 Laravel 和 MongoDB 的全栈 Instagram 克隆 教程,了解如何构建使用 Laravel MongoDB 的全堆栈应用程序。
进一步学习
通过以下资源了解有关 Laravel MongoDB 功能的更多信息:
查询构建器:使用查询构建器指定 MongoDB 查询和聚合。
注意
如果您在此页面上运行问题,请使用此页面右侧或右下角的 Rate this page标签页提交反馈。
您可以使用MongoDB Stack Overflow标签 或MongoDB Reddit Community 寻求一般问题的支持。
