簡介
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 伺服器
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 即可用幾乎相同的操作方式使用 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 索引。
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:
與 MySQL 並用
在 Laravel 中可同時使用 MySQL 與 MongoDB,於模型以$connection 屬性指定連線。
若要在 MySQL 模型與 MongoDB 模型之間建立關聯,請參考混合關聯(Hybrid Relations)。
總結
安裝檢查清單
安裝檢查清單
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、Query Builder、關聯等所有功能的詳細參考。
快速上手
快速學習 MongoDB 與 Laravel 的基本用法。
資料庫設定
Laravel 資料庫連線設定的基礎。
Eloquent 入門
Eloquent ORM 的基本用法。