MongoDB
Introduction
MongoDB は、最も人気のある NoSQL ドキュメント指向データベースの 1 つで、高い書き込み負荷 (分析や IoT に便利) と高可用性 (自動フェイルオーバーを備えたレプリカ セットの設定が簡単) のために使用されます。また、データベースを簡単にシャーディングして水平方向のスケーラビリティを実現し、集計、テキスト検索、地理空間クエリを実行するための強力なクエリ言語を備えています。
SQL データベースのように行または列のテーブルにデータを保存するのではなく、MongoDB データベースの各レコードは、データのバイナリ表現である BSON で記述されたドキュメントです。アプリケーションはこの情報を JSON 形式で取得できます。ドキュメント、配列、埋め込みドキュメント、バイナリ データなど、さまざまなデータ型をサポートします。
Laravel で MongoDB を使用する前に、Composer 経由で mongodb/laravel-mongodb パッケージをインストールして使用することをお勧めします。 laravel-mongodb パッケージは MongoDB によって公式に保守されており、MongoDB は MongoDB ドライバを通じて PHP によってネイティブにサポートされていますが、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 extension installation instructions を確認してください。
Starting a MongoDB Server
MongoDB Community Server は、MongoDB をローカルで実行するために使用でき、Windows、macOS、Linux にインストールするか、Docker コンテナーとして使用できます。 MongoDB のインストール方法については、official MongoDB Community installation guide を参照してください。
MongoDB サーバーの接続文字列は、.env ファイルで設定できます。
MONGODB_URI="mongodb://localhost:27017"
MONGODB_DATABASE="laravel_app"
クラウドで MongoDB をホストする場合は、MongoDB Atlas の使用を検討してください。 アプリケーションからローカルで MongoDB Atlas クラスターにアクセスするには、プロジェクトの IP アクセス リストに add your own IP address in the cluster's network settings する必要があります。
MongoDB Atlas の接続文字列は、.env ファイルで設定することもできます。
MONGODB_URI="mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority"
MONGODB_DATABASE="laravel_app"
Install the Laravel MongoDB Package
最後に、Composer を使用して Laravel MongoDB パッケージをインストールします。
composer require mongodb/laravel-mongodb
mongodbPHP 拡張機能がインストールされていない場合、パッケージのこのインストールは失敗します。 PHP 設定は CLI と Web サーバー間で異なる場合があるため、両方の設定で拡張機能が有効になっていることを確認してください。
Configuration
アプリケーションの config/database.php 構成ファイルを介して MongoDB 接続を構成できます。このファイル内に、mongodb ドライバを利用する mongodb 接続を追加します。
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),
'database' => env('MONGODB_DATABASE', 'laravel_app'),
],
],
Features
構成が完了したら、アプリケーションで mongodb パッケージとデータベース接続を使用して、さまざまな強力な機能を活用できます。
- Using Eloquent、モデルは MongoDB コレクションに保存できます。標準の Eloquent 機能に加えて、Laravel MongoDB パッケージは埋め込みリレーションシップなどの追加機能を提供します。このパッケージは、MongoDB ドライバへの直接アクセスも提供し、生のクエリや集計パイプラインなどの操作を実行するために使用できます。
- クエリビルダを使用した Write complex queries。
mongodbcache driver は、TTL インデックスなどの MongoDB 機能を使用して期限切れのキャッシュ エントリを自動的にクリアするように最適化されています。- Dispatch and process queued jobs と
mongodbキュー ドライバ。 - Storing files in GridFS、GridFS Adapter for Flysystem 経由。
- データベース接続または Eloquent を使用するほとんどのサードパーティ パッケージは、MongoDB で使用できます。
MongoDB と Laravel の使用方法を学習し続けるには、MongoDB の Quick Start guide を参照してください。