MongoDB PHPドライバー
項目一覧
はじめに
公式 MongoDB PHP ドライバーのドキュメント サイトへようこそ。アプリケーションにドライバーを追加して、PHP で MongoDB を操作できます。MongoDB PHP ドライバーは次のコンポーネントで構成されています。
拡張機能 は低レベルの API を提供し、主に libmongoc と libbson を PHP と統合するために使用されます。
このライブラリは、他の MongoDB 言語ドライバーと整合性のある MongoDB データベースを操作するための高レベルの API を提供します。
拡張機能を単独で使用することも可能ですが、MongoDB では拡張機能とライブラリの両方を併用することを推奨しています。PHP ドライバーのコンポーネントの詳細については、このページの「ドライバーのアーキテクチャ」セクションを参照してください。
次のリンクから、ドライバーについて詳しく学んだり、実行可能なプロジェクトのセットアップに関するチュートリアル コンテンツにアクセスしたりできます。
ドライバーのアーキテクチャ
このセクションでは、PHP ドライバーのコンポーネント同士がどのように連携するかについて説明します。これらのコンポーネントは、次の一般的なカテゴリに分類されます。
高レベル API(ライブラリとその他の統合を含む)
拡張(システム ライブラリを統合する拡張機能を含む)
システム(C ドライバー、BSON ライブラリ、暗号化ライブラリを含む)
次の図は、PHP ドライバー コンポーネントのアーキテクチャを示します。
PHP ライブラリは、他の MongoDB ドライバーと整合性のある API を提供します。ライブラリは、クロスドライバー仕様を満たすために継続的に更新されます。ほとんどの PHP アプリケーションで、MongoDB にアクセスするにはライブラリを依存関係として追加する必要があります。
拡張機能は PECL を使用して配布され、PHP をシステム ライブラリに接続します。拡張機能の公開 API は、次の機能を提供します。
接続マネジメント
BSON のエンコードとデコード
オブジェクト ドキュメントの直列化
コマンド実行
カーソル マネジメント
システム ライブラリの詳細については、C ドライバーのドキュメントを参照してください。
互換性のある MongoDB 配置への接続
PHP ドライバーを使用して、次の環境でホストされている配置に接続できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる、MongoDB の自己管理型バージョン
インストール
まず、システムに最新バージョンの PHP がインストールされていることを確認します。ダウンロードおよびインストールの手順については、公式PHPマニュアルを参照してください。
MongoDB 用の PHP ライブラリをインストールする前に、PHP MongoDB 拡張機能をインストールしてください。以下のようにコマンドラインで PECL を使用して拡張機能をインストールできます。
sudo pecl install mongodb
最後に、次の行を php.ini
ファイルに追加します。
extension=mongodb.so
注意
一部のシステムでは、SAPI ごとに複数の INI ファイルが存在する場合があります(たとえば、CLI、FPM)。必要なすべての SAPI で拡張機能を有効にしてください。
PHP ライブラリをインストールするには、Composer を使用して、プロジェクト ルートから次のコマンドを実行する方法がお勧めです。
composer require mongodb/mongodb
ライブラリをインストールしたら、次の例のように、アプリケーションに Composer のオートローダーが含まれていることを確認します。
require_once __DIR__ . '/vendor/autoload.php';
追加のインストール手順については、ライブラリのドキュメントを参照してください。
MongoDB Atlas への接続
次の接続スニペットを使用して、Atlas 上の MongoDB 配置への接続をテストできます。
use Exception; use MongoDB\Client; use MongoDB\Driver\ServerApi; // Replace the placeholder with your Atlas connection string $uri = '<connection string>'; // Specify Stable API version 1 $apiVersion = new ServerApi(ServerApi::V1); // Create a new client and connect to the server $client = new MongoDB\Client($uri, [], ['serverApi' => $apiVersion]); try { // Send a ping to confirm a successful connection $client->selectDatabase('admin')->command(['ping' => 1]); echo "Pinged your deployment. You successfully connected to MongoDB!\n"; } catch (Exception $e) { printf($e->getMessage()); }
この接続スニペットは、PHP ドライバー v1.9 以降を使用して MongoDB Server v5.0 以降に接続するときに有効にできる Stable API 機能を使用します。この機能を使用すると、Stable API でカバーされるコマンドの下位互換性の問題を心配することなく、ドライバーまたはサーバーを更新できます。
Stable API 機能の詳細については、サーバー マニュアルの「Stable API」を参照してください。
注意
2022 年 2 月以降、Versioned API は Stable API という名前に変更しました。この名前の変更に伴うコンセプトと機能の変更はありません。
Stable API なしでの MongoDB Atlas への接続
Stable API 機能をサポートしていないバージョンの MongoDB またはドライバーを使用している場合は、次のコード スニペットを使用して、MongoDB Atlas 上の MongoDB 配置への接続をテストできます。
use Exception; use MongoDB\Client; // Replace the placeholder with your Atlas connection string $uri = '<connection string>'; // Create a new client and connect to the server $client = new MongoDB\Client($uri); try { // Send a ping to confirm a successful connection $client->selectDatabase('admin')->command(['ping' => 1]); echo "Pinged your deployment. You successfully connected to MongoDB!\n"; } catch (Exception $e) { printf($e->getMessage()); }
ローカルマシン上の MongoDB Server への接続
Atlas クラスターを使用する代わりに、開発目的でローカル コンピューター上で MongoDB Server を実行する必要がある場合は、次の手順を完了する必要があります。
MongoDB Server の Communityバージョン または Enterprise バージョンをダウンロードします。
MongoDB Serverをインストールして構成します。
サーバーを起動します。
重要
MongoDB サーバーを悪意のある攻撃から常に保護します。セキュリティ推奨事項のリストについては、「セキュリティ チェックリスト」を参照してください。
MongoDB Serverを正常に開始したら、ドライバー接続コードで接続文字列を指定します。
MongoDB Server がローカルで実行されている場合は、接続文字列 "mongodb://localhost:<port>"
を使用できます。ここで、<port>
は、着信接続をリッスンするようにサーバーに設定したポート番号です。
別のホスト名または IP アドレスを指定する必要がある場合は、接続文字列に関するサーバー マニュアルのエントリを参照してください。
サーバーに接続できるかどうかをテストするには、MongoDB Atlas への接続に記載のコード例の接続文字列を置き換えて実行します。
互換性
32 ビットプラットフォームでは 64 ビット整数を表現する際に問題が発生する可能性があるため、64 ビット環境を使用することをお勧めします。332 ビット プラットフォームを使う場合は、データベースから読み込んだ 64 ビットの整数はいずれも、PHP の整数型ではなく、MongoDB\BSON\Int 64 インスタンスとして返されることに注意してください。
MongoDB の互換性
次の互換性テーブルは、特定のバージョンの MongoDB で使用するための PHP ドライバーの推奨バージョンを示しています。
最初の列は、ドライバーのバージョンの一覧です。
重要
MongoDB は、MongoDB Server のバージョンのサポート終了(EOL)日から 3 年間、MongoDB Server とドライバー間の互換性を保証します。 MongoDB のリリースと EOL の日付の詳細については、「 MongoDB ソフトウェアライフサイクルの予定 」を参照してください。
PHP ドライバーのバージョン | MongoDB 8.0 | MongoDB 7.0 | MongoDB 6.0 | MongoDB 5.0 | MongoDB 4.4 | MongoDB 4.2 | MongoDB 4.0 | MongoDB 3.6 |
---|---|---|---|---|---|---|---|---|
ext +lib 1.20 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
ext + lib 1.16〜1.19 | ⊛ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
ext +lib 1.15 | ⊛ | ⊛ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
言語互換性
次の互換性表は、特定のバージョンの PHP で使用するための PHP ドライバーの推奨バージョンを示しています。
最初の列は、ドライバーのバージョンの一覧です。
PHP ドライバーのバージョン | PHP 8.4 | PHP 8.3 | PHP 8.2 | PHP 8.1 | PHP 8.0 | PHP 7.4 | PHP 7.3 | PHP 7.2 |
---|---|---|---|---|---|---|---|---|
ext +lib 1.20 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
ext + lib 1.17〜1.19 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
ext + lib 1.16 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
ext +lib 1.15 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
互換性テーブルの読み方の詳細については、「 MongoDB 互換性テーブル に関するガイドを参照してください。