簡介 (Introduction)
MongoDB 是最受歡迎的 NoSQL 文件導向資料庫之一,因其高寫入負載(適用於分析或 IoT)和高可用性(易於設定具有自動故障轉移的副本集)而被廣泛使用。它還可以輕鬆地對資料庫進行分片以實現水平擴展,並擁有強大的查詢語言,可用於進行聚合、文字搜尋或地理空間查詢。
與 SQL 資料庫將資料儲存在行或列的表格中不同,MongoDB 資料庫中的每條記錄都是一個以 BSON(資料的二進位表示法)描述的文件。應用程式隨後可以以 JSON 格式檢索此資訊。它支援多種資料類型,包括文件、陣列、嵌入式文件和二進位資料。
在 Laravel 中使用 MongoDB 之前,我們建議透過 Composer 安裝並使用 mongodb/laravel-mongodb 套件。laravel-mongodb 套件由 MongoDB 官方維護,雖然 PHP 透過 MongoDB Driver 原生支援 MongoDB,但 Laravel MongoDB 套件提供了與 Eloquent 和其他 Laravel 功能更豐富的整合:
composer require mongodb/laravel-mongodb
安裝 (Installation)
MongoDB Driver
要連線到 MongoDB 資料庫,需要 mongodb PHP 擴充功能。如果你是使用 Laravel Herd 在本地開發,或透過 php.new 安裝 PHP,你的系統上應該已經安裝了此擴充功能。但是,如果你需要手動安裝擴充功能,可以透過 PECL 進行安裝:
pecl install mongodb
有關安裝 MongoDB PHP 擴充功能的更多資訊,請查看 MongoDB PHP 擴充功能安裝說明。
啟動 MongoDB Server (Starting a MongoDB Server)
MongoDB Community Server 可用於在本地執行 MongoDB,並可在 Windows、macOS、Linux 上安裝,或作為 Docker 容器使用。要了解如何安裝 MongoDB,請參閱 官方 MongoDB Community 安裝指南。
MongoDB Server 的連線字串可以在你的 .env 檔案中設定:
MONGODB_URI="mongodb://localhost:27017"
MONGODB_DATABASE="laravel_app"
若要在雲端託管 MongoDB,請考慮使用 MongoDB Atlas。 要從你的應用程式本地存取 MongoDB Atlas 叢集,你需要將 你自己的 IP 位址新增至叢集的網路設定 中的專案 IP 存取清單。
MongoDB Atlas 的連線字串也可以在你的 .env 檔案中設定:
MONGODB_URI="mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority"
MONGODB_DATABASE="laravel_app"
安裝 Laravel MongoDB 套件 (Install the Laravel MongoDB Package)
最後,使用 Composer 安裝 Laravel MongoDB 套件:
composer require mongodb/laravel-mongodb
[!NOTE] 如果未安裝
mongodbPHP 擴充功能,此套件的安裝將會失敗。PHP 設定在 CLI 和 Web 伺服器之間可能有所不同,因此請確保在兩種設定中都啟用了該擴充功能。
設定 (Configuration)
你可以透過應用程式的 config/database.php 設定檔來設定 MongoDB 連線。在此檔案中,新增一個使用 mongodb driver 的 mongodb 連線:
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),
'database' => env('MONGODB_DATABASE', 'laravel_app'),
],
],
功能 (Features)
設定完成後,你可以在應用程式中使用 mongodb 套件和資料庫連線來利用各種強大的功能:
- 使用 Eloquent,模型可以儲存在 MongoDB 集合 (collections) 中。除了標準的 Eloquent 功能外,Laravel MongoDB 套件還提供了額外的功能,例如嵌入式關聯。該套件還提供了對 MongoDB driver 的直接存取,可用於執行原始查詢和聚合管道等操作。
- 使用查詢建構器 撰寫複雜查詢。
mongodb快取驅動 經過最佳化,可使用 MongoDB 功能(如 TTL 索引)自動清除過期的快取項目。- 使用
mongodb佇列驅動 分派和處理佇列任務。 - 透過 GridFS Adapter for Flysystem 在 GridFS 中儲存檔案。
- 大多數使用資料庫連線或 Eloquent 的第三方套件都可以與 MongoDB 一起使用。
要繼續學習如何使用 MongoDB 和 Laravel,請參閱 MongoDB 的 快速入門指南。