Skip to main content

はじめに

MongoDB は最も人気のある NoSQL ドキュメント指向データベースの一つです。高い書き込み性能(分析や IoT に最適)、高可用性(レプリカセットによる自動フェイルオーバー)、水平スケーリング(シャーディング)、強力なクエリ言語(集計・全文検索・地理空間クエリ)が特徴です。 SQL データベースの行・列形式とは異なり、MongoDB の各レコードは BSON(バイナリ JSON)形式のドキュメントです。アプリケーションはこのデータを JSON 形式で取得できます。
Laravel で MongoDB を使う場合は、MongoDB 公式がメンテナンスする mongodb/laravel-mongodb パッケージの使用を推奨します。このパッケージは Eloquent や Laravel の各種機能とのリッチな統合を提供します。

インストール

MongoDB PHP ドライバ

MongoDB に接続するには mongodb PHP 拡張が必要です。Laravel Herdphp.new を使っている場合はすでにインストール済みです。手動でインストールするには PECL を使います。
インストール詳細は MongoDB PHP 拡張インストールガイド を参照してください。
mongodb PHP 拡張が CLI と Web サーバーの両方で有効になっていることを確認してください。設定が異なる場合があります。

MongoDB サーバーの起動

MongoDB Community Server はローカル開発用に使用できます。Windows、macOS、Linux、Docker でのインストール方法は 公式インストールガイド を参照してください。 Docker を使う場合:
クラウドでのホスティングには MongoDB Atlas が利用できます。Atlas クラスターにローカルからアクセスするには、プロジェクトの IP アクセスリストに自分の IP アドレスを追加する必要があります。

laravel-mongodb パッケージのインストール

Composer で mongodb/laravel-mongodb パッケージをインストールします。

設定

環境変数

.env ファイルに MongoDB の接続情報を追加します。
MongoDB Atlas を使う場合は接続文字列を Atlas のものに変更します。

config/database.php

config/database.phpconnections 配列に mongodb 接続を追加します。
MySQL などのリレーショナル DB と MongoDB を同時に使う場合は、default はそのままにして mongodb 接続を追加するだけで OK です。モデルごとに接続を切り替えられます。

主要機能

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.phpprefix 設定(デフォルトはアプリ名)が自動的に適用されます。
.env で Scout ドライバを mongodb に設定します。
モデルに Searchable トレイトを追加します。
Scout インデックスを作成し、既存データをインポートします。
標準の Scout API で検索できます。

MySQL との併用

Laravel では MySQL と MongoDB を同時に使用できます。モデルごとに $connection プロパティで接続を指定します。
MySQL モデルと MongoDB モデルの間でリレーションを持たせる場合は、ハイブリッドリレーション を参照してください。

まとめ

  1. pecl install mongodb で PHP 拡張をインストール
  2. MongoDB サーバーを起動(ローカルまたは Docker、または Atlas)
  3. composer require mongodb/laravel-mongodb でパッケージをインストール
  4. .envMONGODB_URIMONGODB_DATABASE を設定
  5. config/database.phpmongodb 接続を追加

次のステップ

laravel-mongodb 公式ドキュメント

Eloquent、クエリビルダー、リレーションなど全機能の詳細リファレンス

クイックスタート

MongoDB と Laravel の基本的な使い方を素早く学ぶ

データベース設定

Laravel のデータベース接続設定の基本

Eloquent入門

Eloquent ORM の基本的な使い方
最終更新日 2026年6月25日

関連トピック

検索