Maison  >  Article  >  développement back-end  >  Explication détaillée des étapes de fonctionnement de la base de données PHP+mongoDB

Explication détaillée des étapes de fonctionnement de la base de données PHP+mongoDB

php中世界最好的语言
php中世界最好的语言original
2018-05-16 16:31:191941parcourir

Cette fois, je vous apporte une explication détaillée des étapes de fonctionnement de la base de données PHP+mongoDB, et quelles sont les précautions pour la base de données PHP+mongoDB. Voici des cas pratiques, voyons. jetez un oeil.

La base de données utilisée dans le développement récent du projet est la base de données mongodb. Parce que la société de l'éditeur vient d'utiliser la base de données mongodb, il n'y a pas de classe d'opération de base de données mongodb encapsulée à utiliser auparavant, donc l'éditeur l'utilise lui-même dans le. projet Il encapsule une classe d'opérations de base de données mongodb, et j'aimerais la partager avec vous, j'espère que vous ne critiquerez pas les parties insatisfaisantes.

Comme nous le savons tous, mongodb est un représentant typique de la base de données NoSQL et est recherché par de nombreux développeurs. Il a été particulièrement populaire ces dernières années. La popularité de mongodb n'est pas sans raison. brève introduction à MongoDB.

MongoDB est un produit entre une base de données relationnelle et une base de données non relationnelle. C'est la base de données non relationnelle la plus riche en fonctionnalités et ressemble le plus à une base de données relationnelle. La structure de données qu'il prend en charge est très lâche et est un format bjson de type json, il peut donc stocker des

types de données plus complexes. La plus grande caractéristique de Mongo est que le langage de requête qu'il prend en charge est très puissant. Sa syntaxe est quelque peu similaire au langage de requête orienté objet Il peut presque implémenter la plupart des fonctions similaires aux requêtes à table unique dans les bases de données relationnelles. , et il prend également en charge le traitement des données.

Il se caractérise par des performances élevées, un déploiement facile, une utilisation facile et un stockage de données très pratique. Les principales caractéristiques fonctionnelles sont :

Stockage orienté ensemble, facile à stocker des données de type objet. Mode gratuit.
Prise en charge des requêtes dynamiques.
Prend en charge l'indexation complète, y compris les objets internes.
Requête d'assistance.
Prend en charge la réplication et la récupération après échec.
Utilisez un stockage de données binaires efficace, y compris les objets volumineux (tels que les vidéos, etc.).
Gérer automatiquement la fragmentation pour prendre en charge l'évolutivité au niveau du cloud computing
Prend en charge RUBY, PYTHON, JAVA, C++, PHP et d'autres langages.
Le format de stockage des fichiers est BSON (une extension de JSON)
Peut être consulté via le réseau

Ce qu'on appelle "Collection-Orented" signifie que les données sont regroupées et stockées dans la concentration des données est appelée une collection. Chaque collection possède un nom d'identification unique dans la base de données et peut contenir un nombre illimité de documents. Le concept de collection est similaire à celui d'une table dans une base de données relationnelle (SGBDR), mais la différence est qu'elle n'a pas besoin de définir de schéma.

Sans schéma signifie que pour les fichiers stockés dans la base de données mongodb, nous n'avons besoin de connaître aucune définition de structure. Si nécessaire, vous pouvez stocker des fichiers de structures différentes dans la même base de données.

Les documents stockés dans une collection sont stockés sous forme de paires clé-valeur. La clé est utilisée pour identifier de manière unique un document et est un type de chaîne, tandis que la valeur peut être n'importe quel type de fichier complexe. Nous appelons cette forme de stockage BSON (Binary Serialized dOcument Format).

Le serveur MongoDB peut fonctionner sur les plateformes Linux, Windows ou OS X, prend en charge les applications 32 bits et 64 bits et le port par défaut est 27017. Il est recommandé d'exécuter sur une plate-forme 64 bits car la taille de fichier maximale prise en charge par MongoDB

lors de l'exécution en mode 32 bits est de 2 Go.

MongoDB stocke les données dans des fichiers (chemin par défaut : /data/db) et utilise des fichiers mappés en mémoire pour la gestion afin d'améliorer l'efficacité.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

<?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;];
  }
}
?>
Lecture recommandée :

Le compte public PHP WeChat distribue de manière aléatoire la fonction d'enveloppe rouge en espèces


PHP réalise le partage de session sous équilibrage de charge Explication détaillée du cas (avec code)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn