简介
MongoDB 是最流行的 NoSQL 文档数据库之一。它具备高写入性能(非常适合分析和 IoT)、高可用(通过副本集实现自动故障转移)、水平扩展(分片)以及强大的查询语言(聚合、全文搜索、地理空间查询)。 不同于 SQL 数据库的行 / 列结构,MongoDB 的每一条记录都是 BSON(二进制 JSON)文档。应用中可以以 JSON 的形式读取这些数据。在 Laravel 中使用 MongoDB 时推荐使用由 MongoDB 官方维护的
mongodb/laravel-mongodb 扩展包。它与 Eloquent 及 Laravel 的各类功能有深度集成。安装
MongoDB PHP 驱动
连接 MongoDB 需要mongodb PHP 扩展。使用 Laravel Herd 或 php.new 时已预装。要手动安装可以使用 PECL。
启动 MongoDB 服务器
本地开发可以使用 MongoDB Community Server。Windows、macOS、Linux、Docker 上的安装方法请参考官方安装指南。 使用 Docker:安装 laravel-mongodb 扩展包
使用 Composer 安装mongodb/laravel-mongodb。
配置
环境变量
在.env 中添加 MongoDB 的连接信息。
config/database.php
在config/database.php 的 connections 数组中添加 mongodb 连接。
主要功能
Eloquent 模型
继承MongoDB\Laravel\Eloquent\Model 后,你几乎可以像使用普通 Eloquent 模型一样操作 MongoDB。
MongoDB 是无模式的,不需要迁移。保存文档时集合会自动创建。
基本的 CRUD 操作
与普通 Eloquent 一样。数组与嵌套文档
MongoDB 的数组和嵌套文档也可以直接使用。查询构造器
MongoDB 的查询构造器可以用来写更复杂的查询。更多细节请参考 laravel-mongodb 查询构造器文档。缓存驱动
MongoDB 缓存驱动使用 TTL 索引自动删除过期条目。更多细节请参考 缓存驱动文档。 在config/cache.php 中添加一个 store。
.env 中将缓存驱动切换为 MongoDB。
队列驱动
MongoDB 也可以作为队列驱动使用。详情请参考队列驱动文档。 在config/queue.php 中添加连接。
.env 中把队列连接切到 MongoDB。
使用 GridFS 存储文件
可以借助 MongoDB 的 GridFS 存储文件,通过 Flysystem 的 GridFS 适配器使用。详情请参考 GridFS 文档。config/filesystems.php 中添加磁盘。
向量检索(Vector Search)
通过 MongoDB Atlas Vector Search,可以基于向量嵌入进行相似度检索。将文本、图片、音频等数据向量化后存储,就能查询与目标向量最接近的文档,非常适合 AI / 机器学习场景。向量检索仅在 MongoDB Atlas 上可用,本地的 MongoDB Community Server 或自托管环境不支持。使用前需要先在 Atlas 控制台创建 Vector Search 索引。
vectorSearch 方法。
全文检索(Scout 引擎)
mongodb Scout 引擎让你可以在 MongoDB 上使用 Laravel Scout 的全文检索能力。内部基于 MongoDB Atlas Search,支持模糊搜索、通配符等。详情请参考 Scout 引擎文档。
MongoDB Scout 引擎同样只在 MongoDB Atlas 上可用。Scout 的索引集合与模型的集合必须使用不同的集合。
config/scout.php 中的 prefix(默认是应用名)会自动生效。.env 中将 Scout 驱动设为 mongodb。
Searchable trait。
与 MySQL 混用
Laravel 可以同时使用 MySQL 与 MongoDB,通过模型的$connection 属性指定连接即可。
若要在 MySQL 模型和 MongoDB 模型之间建立关联,请参考混合关联。
小结
安装清单
安装清单
- 通过
pecl install mongodb安装 PHP 扩展 - 启动 MongoDB 服务器(本地、Docker 或 Atlas)
- 通过
composer require mongodb/laravel-mongodb安装扩展包 - 在
.env中配置MONGODB_URI与MONGODB_DATABASE - 在
config/database.php中添加mongodb连接
MongoDB 与 MySQL 的选型
MongoDB 与 MySQL 的选型
功能与配置的对应
功能与配置的对应
下一步
laravel-mongodb 官方文档
Eloquent、查询构造器、关联等全部功能的完整参考
快速开始
快速了解 MongoDB 与 Laravel 的基本用法
数据库配置
Laravel 数据库连接配置基础
Eloquent 入门
Eloquent ORM 的基础用法