ホームページ > バックエンド開発 > PHPチュートリアル > PHPで実装されたmongoDBデータベース操作クラスの完全な例の説明

PHPで実装されたmongoDBデータベース操作クラスの完全な例の説明

jacklove
リリース: 2023-04-01 20:46:01
オリジナル
1667 人が閲覧しました

この記事では、PHP によって実装された mongoDB データベース操作クラスを主に紹介し、完全なサンプル フォームと、シングルトン モードに基づく mongoDB データベース接続、追加、削除、変更、統計およびその他の操作に関する PHP の実装スキルの詳細な分析を組み合わせています。次へ

この記事の例では、PHP によって実装された mongoDB データベース操作クラスについて説明します。参考までに皆さんと共有してください。詳細は次のとおりです。

最近のプロジェクト開発で使用したデータベースは mongodb データベースです。編集者の会社では mongodb データベースを使用したばかりなので、カプセル化された mongodb データベースはありません。操作クラスを使用するために、プロジェクトに mongodb データベース操作クラスをカプセル化してここで共有しました。不十分な部分については批判しないでください。

ご存知のとおり、mongodb は nosql データベースの代表的なものであり、近年特に人気が高まっています。 MongoDB の簡単な紹介。

MongoDB は、リレーショナル データベースと非リレーショナル データベースの中間の製品であり、非リレーショナル データベースの中で最も機能が豊富で、最もリレーショナル データベースに似ています。サポートされるデータ構造は非常に緩やかで、json に似た bjson 形式であるため、より複雑なデータ型を格納できます。 Mongo の最大の特徴は、サポートするクエリ言語が非常に強力であることです。その構文はオブジェクト指向のクエリ言語に似ており、リレーショナル データベースの単一テーブル クエリと同様のほとんどの機能を実装できます。データの。

これは、高性能、簡単な導入、簡単な使用、そしてデータの保存に非常に便利であるという特徴があります。主な機能特徴は次のとおりです。

コレクション ストレージ向けで、オブジェクト タイプのデータを簡単に保存できます。
フリーモード。
動的クエリをサポートします。
内部オブジェクトを含む完全なインデックス作成をサポートします。
サポートクエリ。
レプリケーションと障害回復をサポートします。
大きなオブジェクト (ビデオなど) を含む、効率的なバイナリ データ ストレージを使用します。
断片化を自動的に処理して、クラウド コンピューティング レベルのスケーラビリティをサポートします。
RUBY、PYTHON、JAVA、C、PHP などの言語をサポートします。
ファイルの保存形式は BSON (JSON の拡張子) です。
ネットワーク経由でアクセスできます。

#いわゆる「コレクション指向」とは、データがグループ化されて保存されることを意味します。データの集中はコレクションと呼ばれます。各コレクションにはデータベース内で一意の識別名があり、無制限の数のドキュメントを含めることができます。コレクションの概念は、スキーマを定義する必要がないことを除けば、リレーショナル データベース (RDBMS) のテーブルに似ています。

スキーマフリーとは、mongodb データベースに保存されているファイルについて、その構造定義を知る必要がないことを意味します。必要に応じて、異なる構造のファイルを同じデータベースに保存できます。

コレクションに保存されたドキュメントは、キーと値のペアとして保存されます。キーはドキュメントを一意に識別するために使用され、文字列タイプですが、値は任意の複雑なファイル タイプにすることができます。このストレージ形式を BSON (Binary Serialized dOcument Format) と呼びます。

MongoDB サーバーは Linux、Windows、または OS X プラットフォームで実行でき、32 ビットおよび 64 ビットのアプリケーションをサポートし、デフォルトのポートは 27017 です。 32 ビット モードで実行する場合、MongoDB

でサポートされる最大ファイル サイズは 2GB であるため、64 ビット プラットフォームで実行することをお勧めします。

MongoDB はデータをファイル (デフォルトのパス: /data/db) に保存し、管理にメモリマップされたファイルを使用して効率を高めます。

エディターによってカプセル化された PHP 操作 MongoDB データベースのデータベース操作クラスのソース コードは、参考までに次のとおりです。

<?php
/**
 * PHP操作mongodb数据库操作类
 */
class Database {
  protected $database  = &#39;&#39;;
  protected $mo;
  /**
   * 构造方法
   */
  public function __construct() {
    $server = DBSERVER;
    $user = DBUSER;
    $password = DBPASS;
    $port = DBPORT;
    $database = DBNAME;
    $mongo = $this->getInstance($server, $user, $password, $port);
    $this->database = $mongo->$database;
  }
  /**
   * 数据库单例方法
   * @param $server
   * @param $user
   * @param $password
   * @param $port
   * @return Mongo
   */
  public function getInstance($server, $user, $password, $port) {
    if (isset($this->mo)) {
      return $this->mo;
    } else {
      if (!empty($server)) {
        if (!empty($port)) {
          if (!empty($user) && !empty($password)) {
            $this->mo = new Mongo("mongodb://{$user}:{$password}@{$server}:{$port}");
          } else {
            $this->mo = new Mongo("mongodb://{$server}:{$port}");
          }
        } else {
          $this->mo = new Mongo("mongodb://{$server}");
        }
      } else {
        $this->mo = new Mongo();
      }
      return $this->mo;
    }
  }
  /**
   * 查询表中所有数据
   * @param $table
   * @param array $where
   * @param array $sort
   * @param string $limit
   * @param string $skip
   * @return array|int
   */
  public function getAll($table, $where = array(), $sort = array(), $limit = &#39;&#39;, $skip = &#39;&#39;) {
    if (!empty($where)) {
      $data = $this->database->$table->find($where);
    } else {
      $data = $this->database->$table->find();
    }
    if (!empty($sort)) {
      $data = $data->sort($sort);
    }
    if (!empty($limit)) {
      $data = $data->limit($limit);
    }
    if (!empty($skip)) {
      $data = $data->skip($skip);
    }
    $newData = array();
    while ($data->hasNext()) {
      $newData[] = $data->getNext();
    }
    if (count($newData) == 0) {
      return 0;
    }
    return $newData;
  }
  /**
   * 查询指定一条数据
   * @param $table
   * @param array $where
   * @return int
   */
  public function getOne($table, $where = array()) {
    if (!empty($where)) {
      $data = $this->database->$table->findOne($where);
    } else {
      $data = $this->database->$table->findOne();
    }
    return $data;
  }
  /**
   * 统计个数
   * @param $table
   * @param array $where
   * @return mixed
   */
  public function getCount($table, $where = array()) {
    if (!empty($where)) {
      $data = $this->database->$table->find($where)->count();
    } else {
      $data = $this->database->$table->find()->count();
    }
    return $data;
  }
  /**
   * 直接执行mongo命令
   * @param $sql
   * @return array
   */
  public function toExcute($sql) {
    $result = $this->database->execute($sql);
    return $result;
  }
  /**
   * 分组统计个数
   * @param $table
   * @param $where
   * @param $field
   */
  public function groupCount($table, $where, $field) {
    $cond = array(
      array(
        &#39;$match&#39; => $where,
      ),
      array(
        &#39;$group&#39; => array(
          &#39;_id&#39; => &#39;$&#39; . $field,
          &#39;count&#39; => array(&#39;$sum&#39; => 1),
        ),
      ),
      array(
        &#39;$sort&#39; => array("count" => -1),
      ),
    );
    $this->database->$table->aggregate($cond);
  }
  /**
   * 删除数据
   * @param $table
   * @param $where
   * @return array|bool
   */
  public function toDelete($table, $where) {
    $re = $this->database->$table->remove($where);
    return $re;
  }
  /**
   * 插入数据
   * @param $table
   * @param $data
   * @return array|bool
   */
  public function toInsert($table, $data) {
    $re = $this->database->$table->insert($data);
    return $re;
  }
  /**
   * 更新数据
   * @param $table
   * @param $where
   * @param $data
   * @return bool
   */
  public function toUpdate($table, $where, $data) {
    $re = $this->database->$table->update($where, array(&#39;$set&#39; => $data));
    return $re;
  }
  /**
   * 获取唯一数据
   * @param $table
   * @param $key
   * @return array
   */
  public function distinctData($table, $key, $query = array()) {
    if (!empty($query)) {
      $where = array(&#39;distinct&#39; => $table, &#39;key&#39; => $key, &#39;query&#39; => $query);
    } else {
      $where = array(&#39;distinct&#39; => $table, &#39;key&#39; => $key);
    }
    $data = $this->database->command($where);
    return $data[&#39;values&#39;];
  }
}
?>
ログイン後にコピー

興味があるかもしれない記事:

ThinkPHP フレームワークはリダイレクトを使用してページ リダイレクト メソッドを実装します例の説明

#php 文字列に指定された文字列が含まれているかどうかを説明する複数のメソッド

#php フレームワーク CodeIgniter の説明redis の使用方法

#

以上がPHPで実装されたmongoDBデータベース操作クラスの完全な例の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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