ホームページ バックエンド開発 PHPチュートリアル PHP+mongoDBデータベース操作手順の詳細説明

PHP+mongoDBデータベース操作手順の詳細説明

May 16, 2018 pm 04:31 PM
ステップ データベース

今回は、PHP+mongoDBデータベースの操作手順と、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
/**
 * 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;];
  }
}
?>
ログイン後にコピー

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

php WeChatパブリックアカウントが現金赤い封筒機能をランダムに配布


PHP負荷分散下でのセッション共有ケースの詳細な説明(コード付き)

以上がPHP+mongoDBデータベース操作手順の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Mar 27, 2024 pm 09:39 PM

Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

Huawei携帯電話でのWeChatクローンの操作手順の詳細な説明 Huawei携帯電話でのWeChatクローンの操作手順の詳細な説明 Mar 24, 2024 pm 10:30 PM

ファーウェイ携帯電話の WeChat クローン機能は、携帯電話で 2 つの WeChat アカウントに同時にログインでき、2 つの WeChat アカウントの分離使用を実現できることを意味します。この機能は、ユーザーが仕事と私生活をより便利に管理し、混乱を避けるのに役立ちます。以下では、Huawei携帯電話でWeChatアバターを操作する方法を詳しく紹介します。ステップ 1: 電話の設定を入力する. まず、Huawei 電話のホーム画面を開き、デスクトップで「設定」アプリケーションを見つけ、クリックしてに入ります。ステップ 2: 設定インターフェイスで「ダブル オープン アプリ」機能を見つけ、下にスライドして「ダブル オープン アプリ」オプションを見つけ、クリックして入力します

Hibernate はポリモーフィック マッピングをどのように実装しますか? Hibernate はポリモーフィック マッピングをどのように実装しますか? Apr 17, 2024 pm 12:09 PM

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます Jul 18, 2024 am 05:48 AM

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

HTML がデータベースを読み取る方法の詳細な分析 HTML がデータベースを読み取る方法の詳細な分析 Apr 09, 2024 pm 12:36 PM

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル Jun 04, 2024 pm 01:42 PM

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

PHP でデータベース接続エラーを処理する方法 PHP でデータベース接続エラーを処理する方法 Jun 05, 2024 pm 02:16 PM

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

Honor PhoneにHongmeng OSをインストールする方法 Honor PhoneにHongmeng OSをインストールする方法 Mar 23, 2024 pm 07:12 PM

Honor携帯電話にHongmengシステムをインストールする方法 現在、技術の急速な発展とスマートフォンの機能に対する人々の需要の高まりに伴い、より多くのユーザーが携帯電話システムをカスタマイズし、パーソナライズし始めています。最近、ファーウェイが発売したHongmengオペレーティングシステムが大きな注目を集めており、多くのユーザーがこの新しいシステムを携帯電話にインストールしたいと考えています。 Huawei のサブブランドとして、Honor 携帯電話もユーザーのお気に入りの選択肢の 1 つです。それでは、Hongmeng システムを Honor 携帯電話にインストールするにはどうすればよいですか?次に調べてみましょう。まず、私たちは、

See all articles