MongoDB
イントロダクション
MongoDBは最も人気のあるNoSQLドキュメント指向データベースの1つで、高い書き込み負荷(分析やIoTに有用)と高い可用性(自動フェイルオーバーを備えたレプリカセットの設定が容易)のために使用されています。また、水平方向のスケーラビリティのためにデータベースを簡単にシャーディングでき、集計、テキスト検索、地理空間クエリを行うための強力なクエリ言語も備えています。
SQLデータベースのように行や列のテーブルにデータを保存する代わりに、MongoDBデータベースの各レコードは、データのバイナリ表現であるBSONで記述されたドキュメントです。アプリケーションは、この情報をJSON形式で取得できます。ドキュメント、配列、埋め込みドキュメント、バイナリデータなど、さまざまなデータ型をサポートしています。
LaravelでMongoDBを使用する前に、Composer経由でmongodb/laravel-mongodbパッケージをインストールして使用することをお勧めします。laravel-mongodbパッケージはMongoDBによって公式にメンテナンスされており、MongoDBはMongoDBドライバを通じてPHPでネイティブにサポートされていますが、Laravel MongoDBパッケージはEloquentやその他のLaravel機能とのよりリッチな統合を提供します。
1composer require mongodb/laravel-mongodb
インストール
MongoDBドライバ
MongoDBデータベースに接続するには、mongodbPHP拡張機能が必要です。Laravel Herdを使用してローカルで開発している場合や、php.new経由でPHPをインストールした場合は、すでにこの拡張機能がシステムにインストールされています。ただし、拡張機能を手動でインストールする必要がある場合は、PECL経由で行うことができます。
1pecl install mongodb
MongoDB PHP拡張機能のインストールに関する詳細については、MongoDB PHP拡張機能のインストール手順を確認してください。
MongoDBサーバの起動
MongoDB Community Serverを使用してローカルでMongoDBを実行でき、Windows、macOS、Linux、またはDockerコンテナとしてインストールできます。MongoDBのインストール方法については、公式のMongoDB Communityインストールガイドを参照してください。
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拡張機能がインストールされていない場合、このパッケージのインストールは失敗します。PHPの設定はCLIとWebサーバで異なる場合があるため、両方の設定で拡張機能が有効になっていることを確認してください。
設定
MongoDBの接続は、アプリケーションのconfig/database.php設定ファイルで設定できます。このファイル内で、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キャッシュドライバは、TTLインデックスなどのMongoDBの機能を使用して、期限切れのキャッシュエントリを自動的にクリアするように最適化されています。mongodbキュードライバを使用して、キューに入れられたジョブをディスパッチおよび処理します。- Flysystem用のGridFSアダプタを介して、GridFSにファイルを保存します。
- データベース接続またはEloquentを使用するほとんどのサードパーティパッケージは、MongoDBで使用できます。
MongoDBとLaravelの使用方法について学習を続けるには、MongoDBのクイックスタートガイドを参照してください。