MongoDB
簡介
MongoDB 是最受歡迎的 NoSQL 文件型資料庫之一,因其高寫入負載(適用於分析或物聯網場景)和高可用性(易於設定帶有自動故障轉移的副本集)而備受青睞。它還可以輕鬆對資料庫進行分片以實現水平擴充套件,並擁有強大的查詢語言,用於執行聚合、文字搜尋或地理空間查詢。
與 SQL 資料庫將資料儲存在行或列的表格中不同,MongoDB 資料庫中的每條記錄都是以 BSON(一種二進位制資料表示形式)描述的文件。應用程式隨後可以以 JSON 格式檢索這些資訊。它支援多種資料型別,包括文件、陣列、嵌入式文件和二進位制資料。
在 Laravel 中使用 MongoDB 之前,我們建議透過 Composer 安裝並使用 mongodb/laravel-mongodb 擴充套件包。laravel-mongodb 擴充套件包由 MongoDB 官方維護。雖然 PHP 透過 MongoDB 驅動程式原生支援 MongoDB,但 Laravel MongoDB 擴充套件包提供了與 Eloquent 和其他 Laravel 特性更深入的整合。
1composer require mongodb/laravel-mongodb
安裝
MongoDB 驅動程式
要連線 MongoDB 資料庫,需要安裝 mongodb PHP 擴充套件。如果你使用 Laravel Herd 進行本地開發,或者透過 php.new 安裝了 PHP,那麼你的系統上已經安裝了該擴充套件。如果需要手動安裝,可以透過 PECL 進行安裝。
1pecl install mongodb
有關安裝 MongoDB PHP 擴充套件的更多資訊,請檢視 MongoDB PHP 擴充套件安裝指南。
啟動 MongoDB 伺服器
MongoDB Community Server 可用於在本地執行 MongoDB,並可在 Windows、macOS、Linux 上安裝,或作為 Docker 容器執行。要了解如何安裝 MongoDB,請參考 MongoDB 官方社群安裝指南。
MongoDB 伺服器的連線字串可以在你的 .env 檔案中設定。
1MONGODB_URI="mongodb://:27017"2MONGODB_DATABASE="laravel_app"
如需在雲端託管 MongoDB,請考慮使用 MongoDB Atlas。要從你的應用程式在本地訪問 MongoDB Atlas 叢集,你需要將你的 IP 地址新增到叢集網路設定的專案 IP 訪問列表中。
MongoDB Atlas 的連線字串也可以在你的 .env 檔案中設定。
1MONGODB_URI="mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority"2MONGODB_DATABASE="laravel_app"
安裝 Laravel MongoDB 擴充套件包
最後,使用 Composer 安裝 Laravel MongoDB 擴充套件包。
1composer require mongodb/laravel-mongodb
如果未安裝 mongodb PHP 擴充套件,擴充套件包的安裝將會失敗。CLI(命令列)和 Web 伺服器之間的 PHP 配置可能有所不同,請確保擴充套件在兩種配置中均已啟用。
配置
你可以在應用程式的 config/database.php 配置檔案中配置 MongoDB 連線。在該檔案中,新增一個使用 mongodb 驅動程式的 mongodb 連線。
1'connections' => [2 'mongodb' => [3 'driver' => 'mongodb',4 'dsn' => env('MONGODB_URI', 'mongodb://:27017'),5 'database' => env('MONGODB_DATABASE', 'laravel_app'),6 ],7],
特性
配置完成後,你可以在應用程式中使用 mongodb 擴充套件包和資料庫連線,以利用其各種強大的功能。
- 使用 Eloquent,模型可以儲存在 MongoDB 集合中。除了標準的 Eloquent 特性外,Laravel MongoDB 擴充套件包還提供了諸如嵌入式關係等額外功能。該擴充套件包還提供對 MongoDB 驅動程式的直接訪問,可用於執行原生查詢和聚合管道等操作。
- 使用查詢構建器編寫複雜查詢。
mongodb快取驅動程式經過最佳化,可利用 MongoDB 的特性(如 TTL 索引)自動清除過期的快取條目。- 使用
mongodb佇列驅動程式排程和處理佇列任務。 - 透過 Flysystem 的 GridFS 介面卡,在 GridFS 中儲存檔案。
- 大多數使用資料庫連線或 Eloquent 的第三方擴充套件包都可以與 MongoDB 一起使用。
要繼續學習如何使用 MongoDB 和 Laravel,請參考 MongoDB 的快速入門指南。