ホームページ > バックエンド開発 > PHPチュートリアル > PHP と MongoDB を使用して非リレーショナル データベース操作を実装する方法

PHP と MongoDB を使用して非リレーショナル データベース操作を実装する方法

王林
リリース: 2023-06-25 10:38:01
オリジナル
1293 人が閲覧しました

インターネットの発展に伴い、データ量は劇的に増加し、従来のリレーショナル データベースではデータ処理のニーズを完全に満たすことができなくなりました。新しいデータベース テクノロジとして、非リレーショナル データベース (NoSQL) は、大量のデータや同時アクセスの多い状況をより適切に処理できます。その中でも、MongoDB は、Nosql の代表的なものの 1 つとして、動的データ スキーマ、高スケーラビリティ、高可用性、高パフォーマンスをサポートしており、特にオブジェクト指向開発モデルに適しています。この記事では、PHP と MongoDB を使用して非リレーショナル データベース操作を実装する方法を紹介します。

1. MongoDB と PHP 拡張機能のインストール

MongoDB を使用する前に、まず MongoDB サービスと対応する PHP 拡張機能をインストールする必要があります。 MongoDB のインストールについては、公式ドキュメントを参照してください。ここでは詳しく説明しません。 PHP 拡張機能のインストールは、次の手順で実行できます。

  1. PHP 拡張機能のダウンロード: MongoDB 拡張機能の対応するバージョンのソース コードをダウンロードします (https://pecl.php.net/) package/mongodb)をPECL公式Webサイトからダウンロードし、解凍します。
  2. PHP 拡張機能をコンパイルします: コマンド ラインでソース コード フォルダーを入力し、次のコマンドを実行します:

    phpize
    ./configure
    make
    make install
    ログイン後にコピー
  3. php.ini ファイルを構成します: Find php .ini ファイルを開き、次の内容を追加します:

    extension=mongodb.so
    ログイン後にコピー
  4. PHP サービスを再起動します: PHP サービスを再起動して、構成を有効にします。コマンド方法は、次のようにシステムによって異なります。

    systemctl restart php-fpm
    ログイン後にコピー

2. MongoDB データベースへの接続

MongoDB データベースへの接続には、MongoDB が提供する PHP ドライバーを使用する必要があります。具体的な操作は次のとおりです:

  1. 接続の作成: MongoClient クラスを使用して接続を作成します。そのコンストラクターのパラメーターは、MongoDB サービスの IP アドレスとポート番号です。

    $client = new MongoClient("mongodb://127.0.0.1:27017");
    ログイン後にコピー
  2. データベースの選択: selectDB メソッドを使用して、操作するデータベースを選択します。

    $db = $client->selectDB('test');
    ログイン後にコピー

3. データの挿入

MongoDB は JSON 形式でのデータ ストレージをサポートしているため、データを挿入するとデータを JSON 形式に変換できます。具体的な操作は次のとおりです。

  1. ドキュメントの作成: MongoDB のドキュメント クラス MongoDBBSONDocument を使用してドキュメント オブジェクトを作成します。

    $doc = new MongoDBBSONDocument([
        'name' => '张三',
        'age' => 20,
        'sex' => '男',
        'address' => '北京市',
    ]);
    ログイン後にコピー
  2. データの挿入: データを挿入するには、MongoDB のコレクション クラス MongoCollection の insertOne メソッドを使用します。

    $collection = $db->selectCollection('users');
    $collection->insertOne($doc);
    ログイン後にコピー

4. クエリ データ

MongoDB は、さまざまな強力なクエリおよび集計操作をサポートしています。具体的な操作は次のとおりです:

  1. ドキュメントのクエリ: find メソッドを使用してドキュメントをクエリします。最初のパラメータはクエリ条件で、2 番目のパラメータはオプションです (指定されたフィールドのクエリ、並べ替えなど)。

    $collection = $db->selectCollection('users');
    $cursor = $collection->find([
        'age' => ['$gt' => 18]
    ], [
        'projection' => ['name' => 1, 'age' => 1],
        'sort' => ['age' => 1],
    ]);
    foreach ($cursor as $doc) {
        echo $doc['name'] . ' ' . $doc['age'] . "
    ";
    }
    ログイン後にコピー
  2. 集計操作: 集計メソッドなどの集計メソッドを使用して、マルチレベルの集計計算を実行し、複雑なクエリ要件を実現します。

    $collection = $db->selectCollection('users');
    $cursor = $collection->aggregate([
        ['$match' => ['age' => ['$gt' => 18]]],
        ['$group' => [
            '_id' => '$sex',
            'count' => ['$sum' => 1]
        ]],
        ['$sort' => ['count' => -1]],
    ]);
    foreach ($cursor as $doc) {
        echo $doc['_id'] . ' ' . $doc['count'] . "
    ";
    }
    ログイン後にコピー

5. データの更新と削除

MongoDB は、単一およびバッチの更新および削除操作をサポートしています。具体的な操作は次のとおりです:

  1. 単一更新: updateOne メソッドを使用して単一のデータを更新します。最初のパラメーターはクエリ条件、2 番目のパラメーターは更新されるデータです。

    $collection = $db->selectCollection('users');
    $collection->updateOne(
        ['name' => '张三'],
        ['$set' => ['age' => 21]]
    );
    ログイン後にコピー
  2. 複数の更新: updateMany メソッドを使用して、データをバッチで更新します。

    $collection = $db->selectCollection('users');
    $collection->updateMany(
        ['sex' => '男'],
        ['$inc' => ['age' => 1]]
    );
    ログイン後にコピー
  3. 単一の削除: deleteOne メソッドを使用して単一のデータを削除します。最初のパラメーターはクエリ条件です。

    $collection = $db->selectCollection('users');
    $collection->deleteOne(['name' => '张三']);
    ログイン後にコピー
  4. 複数の削除: データをバッチで削除するには、deleteMany メソッドを使用します。

    $collection = $db->selectCollection('users');
    $collection->deleteMany(['sex' => '男']);
    ログイン後にコピー

6. 概要

上記は、PHP と MongoDB を使用して非リレーショナル データベース操作を実装するための基本的な概要です。さまざまなビジネス シナリオの具体的な実装方法は、次のとおりです。読者 実際の状況に応じて調整および拡張できます。 MongoDB は、複雑なビジネス ニーズをより適切に満たすための豊富な操作 API と集計メソッドを提供します。

以上がPHP と MongoDB を使用して非リレーショナル データベース操作を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート