Skip to main content

簡介

MongoDB 是最受歡迎的 NoSQL 文件導向資料庫之一。特色包含高寫入效能(適合分析與 IoT)、高可用性(透過 replica set 自動故障轉移)、水平擴充(sharding),以及強大的查詢語言(聚合、全文檢索、地理空間查詢)。 與 SQL 資料庫的列 / 欄形式不同,MongoDB 的每筆資料都是 BSON(binary JSON)形式的文件。應用程式可以以 JSON 格式取得這些資料。
在 Laravel 中使用 MongoDB,建議使用官方維護的 mongodb/laravel-mongodb 套件。它提供與 Eloquent 及 Laravel 各功能的豐富整合。

安裝

MongoDB PHP 驅動

要連線至 MongoDB 需要 mongodb PHP 擴充。若你使用 Laravel Herdphp.new,通常已預先安裝。手動安裝請透過 PECL:
詳細請參閱 MongoDB PHP 擴充安裝指南
請確認 mongodb PHP 擴充在 CLI 與 Web 伺服器兩邊都已啟用,因為設定可能不同。

啟動 MongoDB 伺服器

MongoDB Community Server 可用於本機開發。Windows、macOS、Linux、Docker 的安裝方式請參閱官方安裝指南 使用 Docker 時:
雲端託管可使用 MongoDB Atlas。要從本機連線至 Atlas cluster,需將自己的 IP 加入專案的 IP 存取名單。

安裝 laravel-mongodb 套件

以 Composer 安裝 mongodb/laravel-mongodb

設定

環境變數

.env 加入 MongoDB 的連線資訊。
若使用 MongoDB Atlas,請將連線字串換成 Atlas 的:

config/database.php

config/database.phpconnections 陣列加入 mongodb
若要同時使用 MySQL 等關聯式資料庫與 MongoDB,default 保持不變,只要加入 mongodb 連線即可。可依模型切換連線。

主要功能

Eloquent 模型

繼承 MongoDB\Laravel\Eloquent\Model 即可用幾乎相同的操作方式使用 MongoDB。
MongoDB 為 schema-less,不需要 migration。儲存文件時 collection 會自動建立。

基本 CRUD 操作

可以與一般 Eloquent 一樣使用相同的 API。

陣列與內嵌文件

可直接運用 MongoDB 的陣列與內嵌文件優勢:

Query Builder

可用 MongoDB 的 Query Builder 撰寫較複雜的查詢,詳細請見 laravel-mongodb Query Builder 文件

快取驅動

MongoDB 快取驅動會透過 TTL 索引自動刪除過期項目。詳細請見快取驅動文件 config/cache.php 加入 store:
.env 中將快取驅動改為 MongoDB:

佇列驅動

也可以將 MongoDB 作為佇列驅動使用。詳細請見佇列驅動文件 config/queue.php 加入連線:
.env 中改為 MongoDB:

以 GridFS 儲存檔案

可使用 MongoDB 的 GridFS 儲存檔案,需要 Flysystem 的 GridFS adapter。詳細請見 GridFS 文件
config/filesystems.php 加入 disk:

向量搜尋(Vector Search)

透過 MongoDB Atlas Vector Search 可依向量嵌入進行相似度搜尋。將文字、圖片、音訊等資料向量化後儲存,找出最接近查詢向量的文件;這是為 AI / 機器學習量身打造的搜尋機能。
向量搜尋僅能在 MongoDB Atlas 使用,本機 MongoDB Community Server 或自架環境無法使用。事先需在 Atlas 主控台建立 Vector Search 索引。
在 Query Builder 中使用 vectorSearch

全文檢索(Scout 引擎)

可透過 mongodb Scout 引擎在 MongoDB 使用 Laravel Scout 的全文檢索。內部使用 MongoDB Atlas Search,支援模糊搜尋與萬用字元搜尋。詳細請見 Scout 引擎文件
MongoDB Scout 引擎同樣僅能於 MongoDB Atlas 使用。Scout 的索引 collection 必須與模型的 collection 分開。config/scout.phpprefix(預設為應用程式名稱)會自動套用。
.env 將 Scout 驅動設為 mongodb
在模型上加入 Searchable trait:
建立 Scout 索引並匯入既有資料:
使用標準 Scout API 進行搜尋:

與 MySQL 並用

在 Laravel 中可同時使用 MySQL 與 MongoDB,於模型以 $connection 屬性指定連線。
若要在 MySQL 模型與 MongoDB 模型之間建立關聯,請參考混合關聯(Hybrid Relations)

總結

  1. pecl install mongodb 安裝 PHP 擴充
  2. 啟動 MongoDB 伺服器(本機或 Docker、或 Atlas)
  3. composer require mongodb/laravel-mongodb 安裝套件
  4. .env 設定 MONGODB_URIMONGODB_DATABASE
  5. config/database.php 加入 mongodb 連線

下一步

laravel-mongodb 官方文件

Eloquent、Query Builder、關聯等所有功能的詳細參考。

快速上手

快速學習 MongoDB 與 Laravel 的基本用法。

資料庫設定

Laravel 資料庫連線設定的基礎。

Eloquent 入門

Eloquent ORM 的基本用法。
最後修改於 2026年8月2日

相關主題

搜尋