コンテンツへスキップ

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機能とのより豊富な統合を提供します。

composer require mongodb/laravel-mongodb

インストール

MongoDBドライバ

MongoDBデータベースに接続するには、`mongodb` PHP拡張機能が必要です。Laravel Herd を使用してローカルで開発している場合、または`php.new`を介してPHPをインストールした場合、この拡張機能は既にシステムにインストールされています。ただし、拡張機能を手動でインストールする必要がある場合は、PECLを介してインストールできます。

pecl install mongodb

MongoDB PHP拡張機能のインストールの詳細については、MongoDB PHP拡張機能のインストール手順を参照してください。

MongoDBサーバーの起動

MongoDB Community Serverを使用してMongoDBをローカルで実行でき、Windows、macOS、Linux、またはDockerコンテナとしてインストールできます。MongoDBのインストール方法については、公式MongoDB Communityインストールガイドを参照してください。

MongoDBサーバーの接続文字列は、`.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パッケージのインストール

最後に、Composerを使用してLaravel MongoDBパッケージをインストールします。

composer require mongodb/laravel-mongodb
lightbulb

`mongodb` PHP拡張機能がインストールされていない場合、このパッケージのインストールは失敗します。PHPの設定はCLIとWebサーバーで異なる場合があるため、両方の設定で拡張機能が有効になっていることを確認してください。

設定

アプリケーションの`config/database.php`設定ファイルでMongoDB接続を設定できます。このファイル内で、`mongodb`ドライバを使用する`mongodb`接続を追加します。

'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),
'database' => env('MONGODB_DATABASE', 'laravel_app'),
],
],

機能

設定が完了したら、アプリケーションで`mongodb`パッケージとデータベース接続を使用して、さまざまな強力な機能を活用できます。

  • Eloquentの使用により、モデルをMongoDBコレクションに保存できます。標準的なEloquent機能に加えて、Laravel MongoDBパッケージは、埋め込みリレーションシップなどの追加機能を提供します。このパッケージは、生のクエリや集計パイプラインなどの操作を実行するために使用できるMongoDBドライバへの直接アクセスも提供します。
  • 複雑なクエリを記述するクエリビルダーを使用します。
  • `mongodb`キャッシュドライバは、TTLインデックスなどのMongoDB機能を使用して、期限切れのキャッシュエントリを自動的にクリアするように最適化されています。
  • `mongodb`キュードライバを使用してキューされたジョブのディスパッチと処理を行います。
  • FlysystemのGridFSアダプターを介してGridFSにファイルを保存する
  • データベース接続またはEloquentを使用するほとんどのサードパーティパッケージは、MongoDBで使用できます。

MongoDBとLaravelの使い方をさらに学習するには、MongoDBのクイックスタートガイドを参照してください。