はじめに
MongoDB は最も人気のある NoSQL ドキュメント指向データベースの一つです。高い書き込み性能(分析や IoT に最適)、高可用性(レプリカセットによる自動フェイルオーバー)、水平スケーリング(シャーディング)、強力なクエリ言語(集計・全文検索・地理空間クエリ)が特徴です。 SQL データベースの行・列形式とは異なり、MongoDB の各レコードは BSON(バイナリ JSON)形式のドキュメントです。アプリケーションはこのデータを JSON 形式で取得できます。Laravel で MongoDB を使う場合は、MongoDB 公式がメンテナンスする
mongodb/laravel-mongodb パッケージの使用を推奨します。このパッケージは Eloquent や Laravel の各種機能とのリッチな統合を提供します。インストール
MongoDB PHP ドライバ
MongoDB に接続するにはmongodb PHP 拡張が必要です。Laravel Herd や php.new を使っている場合はすでにインストール済みです。手動でインストールするには PECL を使います。
MongoDB サーバーの起動
MongoDB Community Server はローカル開発用に使用できます。Windows、macOS、Linux、Docker でのインストール方法は 公式インストールガイド を参照してください。 Docker を使う場合:laravel-mongodb パッケージのインストール
Composer でmongodb/laravel-mongodb パッケージをインストールします。
設定
環境変数
.env ファイルに MongoDB の接続情報を追加します。
config/database.php
config/database.php の connections 配列に mongodb 接続を追加します。
主要機能
Eloquent モデル
MongoDB\Laravel\Eloquent\Model を継承することで、通常の Eloquent モデルとほぼ同じ感覚で MongoDB を操作できます。
MongoDB はスキーマレスなので、マイグレーションは不要です。ドキュメントを保存すると自動的にコレクションが作成されます。
基本的な CRUD 操作
通常の Eloquent と同じ API で操作できます。配列・埋め込みドキュメント
MongoDB の強みである配列や埋め込みドキュメントをそのまま扱えます。クエリビルダー
MongoDB のクエリビルダーを使って複雑なクエリを記述できます。詳細は laravel-mongodb クエリビルダードキュメント を参照してください。キャッシュドライバ
MongoDB のキャッシュドライバは TTL インデックスを使って期限切れエントリを自動的に削除します。詳細は キャッシュドライバドキュメント を参照してください。config/cache.php にストアを追加します。
.env でキャッシュドライバを MongoDB に変更します。
キュードライバ
MongoDB をキュードライバとして使うことができます。詳細は キュードライバドキュメント を参照してください。config/queue.php に接続を追加します。
.env でキュー接続を MongoDB に変更します。
GridFS によるファイル保存
MongoDB の GridFS を使ってファイルを保存できます。Flysystem 用 GridFS アダプター を利用します。詳細は GridFS ドキュメント を参照してください。config/filesystems.php にディスクを追加します。
ベクトル検索(Vector Search)
MongoDB Atlas Vector Search を使って、ベクトル埋め込みによる類似検索ができます。テキスト、画像、音声などのデータをベクトル化して保存しておき、クエリベクトルに最も近いドキュメントを取得する AI / 機械学習向けの検索機能です。ベクトル検索は MongoDB Atlas 上でのみ利用可能です。ローカルの MongoDB Community Server や自己ホスト型環境では使用できません。事前に Atlas コンソールで Vector Search インデックスを作成しておく必要があります。
vectorSearch メソッドはクエリビルダーで利用できます。
全文検索(Scout エンジン)
mongodb Scout エンジンを使って Laravel Scout の全文検索機能を MongoDB で利用できます。内部的に MongoDB Atlas Search を使用し、ファジー検索やワイルドカード検索に対応しています。詳細は Scout エンジンドキュメント を参照してください。
MongoDB Scout エンジンも MongoDB Atlas 上でのみ利用可能です。Scout のインデックスコレクションはモデルのコレクションとは別のコレクションを使う必要があります。
config/scout.php の prefix 設定(デフォルトはアプリ名)が自動的に適用されます。.env で Scout ドライバを mongodb に設定します。
Searchable トレイトを追加します。
MySQL との併用
Laravel では MySQL と MongoDB を同時に使用できます。モデルごとに$connection プロパティで接続を指定します。
MySQL モデルと MongoDB モデルの間でリレーションを持たせる場合は、ハイブリッドリレーション を参照してください。
まとめ
インストールのチェックリスト
インストールのチェックリスト
pecl install mongodbで PHP 拡張をインストール- MongoDB サーバーを起動(ローカルまたは Docker、または Atlas)
composer require mongodb/laravel-mongodbでパッケージをインストール.envにMONGODB_URIとMONGODB_DATABASEを設定config/database.phpにmongodb接続を追加
MongoDB と MySQL の使い分け
MongoDB と MySQL の使い分け
機能の使い分け
機能の使い分け
次のステップ
laravel-mongodb 公式ドキュメント
Eloquent、クエリビルダー、リレーションなど全機能の詳細リファレンス
クイックスタート
MongoDB と Laravel の基本的な使い方を素早く学ぶ
データベース設定
Laravel のデータベース接続設定の基本
Eloquent入門
Eloquent ORM の基本的な使い方