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 Herd 或 php.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.php 的 connections 陣列加入 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.php 的 prefix(預設為應用程式名稱)會自動套用。
於 .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_URI 與 MONGODB_DATABASE
  5. 於 config/database.php 加入 mongodb 連線

下一步

laravel-mongodb 官方文件

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

快速上手

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

資料庫設定

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

Eloquent 入門

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