백엔드 개발 PHP 튜토리얼 PHP에서 mongodb 데이터베이스를 캡슐화하는 방법

PHP에서 mongodb 데이터베이스를 캡슐화하는 방법

May 18, 2018 pm 03:56 PM
mongodb php 데이터 베이스

이 기사는 주로 PHP로 캡슐화된 mongodb 작업 클래스를 공유합니다. 필요한 친구는

핵심 코드

<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


class mongo_db {

  private $config;
  private $connection;
  private $db;
  private $connection_string;
  private $host;
  private $port;
  private $user;
  private $pass;
  private $dbname;
  private $persist;
  private $persist_key;
  private $selects = array();
  private $wheres = array();
  private $sorts = array();
  private $limit = 999999;
  private $offset = 0;
  private $timeout = 200;
  private $key = 0;
  /**   *  --------------------------------------------------------------------------------   * CONSTRUCTOR * --------------------------------------------------------------------------------   *  * Automatically check if the Mongo PECL extension has been installed/enabled. * Generate the connection string and establish a connection to the MongoDB.  */

  public function __construct() {
    if((IS_NOSQL != 1)){
      return;
    }
    if (!class_exists(&#39;Mongo&#39;)) {
      //$this->error("The MongoDB PECL extension has not been installed or enabled", 500);
    }
    $configs =wxcity_base::load_config("cache","mongo_db");
    $num = count($configs[&#39;connect&#39;]);
    $this->timeout = trim($configs[&#39;timeout&#39;]);
    $keys = wxcity_base::load_config(&#39;double&#39;);
    $this->key = $keys[&#39;mongo_db&#39;];
    $this->config = $configs[&#39;connect&#39;][$this->key];
    $status = $this->connect();
    if($status == false)
    {
      for($i = 1; $i < $num; $i++)
      {
        $n = $this->key + $i;
        $key = $n >= $num ? $n - $num : $n;
        $this->config = $configs[&#39;connect&#39;][$key];
        $status = $this->connect();
        if($status!=false)
        {
          $keys[&#39;mongo_db&#39;] = $key ;
          $this->key = $key;
          $data = "<?php\nreturn ".var_export($keys, true).";\n?>";
          file_put_contents(WHTY_PATH.&#39;configs/double.php&#39;, $data, LOCK_EX);
          break;
        }
      }
    }
    if($status==false)
    {
      die(&#39;mongoDB not connect&#39;);
    }
  }

  function __destruct() {
    if((IS_NOSQL != 1)){
      return;
    }
    if($this->connection)
    {
      $this->connection->close();
    }
  }

  /**   *  --------------------------------------------------------------------------------   * CONNECT TO MONGODB  * --------------------------------------------------------------------------------   *  * Establish a connection to MongoDB using the connection string generated in  * the connection_string() method. If &#39;mongo_persist_key&#39; was set to true in the  * config file, establish a persistent connection. We allow for only the &#39;persist&#39;   * option to be set because we want to establish a connection immediately. */
  private function connect() {
    $this->connection_string();
    $options = array(&#39;connect&#39;=>true,&#39;timeout&#39;=>$this->timeout);
    try {
      $this->connection = new Mongo($this->connection_string, $options);
      $this->db = $this->connection->{$this->dbname};
      return($this);
    } catch (MongoConnectionException $e) {
      return false;
    }

  }
  /**   *  --------------------------------------------------------------------------------   * BUILD CONNECTION STRING * --------------------------------------------------------------------------------   *  * Build the connection string from the config file.  */
  private function connection_string() {
    $this->host = trim($this->config[&#39;hostname&#39;]);
    $this->port = trim($this->config[&#39;port&#39;]);
    $this->user = trim($this->config[&#39;username&#39;]);
    $this->pass = trim($this->config[&#39;password&#39;]);
    $this->dbname = trim($this->config[&#39;database&#39;]);
    $this->persist = trim($this->config[&#39;autoconnect&#39;]);
    $this->persist_key = trim($this->config[&#39;mongo_persist_key&#39;]);

    $connection_string = "mongodb://";
    if (emptyempty($this->host)) {
      $this->error("The Host must be set to connect to MongoDB", 500);
    } if (emptyempty($this->dbname)) {
      $this->error("The Database must be set to connect to MongoDB", 500);
    } if (!emptyempty($this->user) && !emptyempty($this->pass)) {
      $connection_string .= "{$this->user}:{$this->pass}@";
    } if (isset($this->port) && !emptyempty($this->port)) {
      $connection_string .= "{$this->host}:{$this->port}";
    } else {
      $connection_string .= "{$this->host}";
    } $this->connection_string = trim($connection_string);
  }

  /**   *  --------------------------------------------------------------------------------   * Switch_db  * --------------------------------------------------------------------------------   *  * Switch from default database to a different db  */
  public function switch_db($database = &#39;&#39;) {
    if (emptyempty($database)) {
      $this->error("To switch MongoDB databases, a new database name must be specified", 500);
    } $this->dbname = $database;
    try {
      $this->db = $this->connection->{$this->dbname};
      return(TRUE);
    } catch (Exception $e) {
      $this->error("Unable to switch Mongo Databases: {$e->getMessage()}", 500);
    }
  }

  /**   *  --------------------------------------------------------------------------------   * SELECT FIELDS  * --------------------------------------------------------------------------------   *  * Determine which fields to include OR which to exclude during the query process. * Currently, including and excluding at the same time is not available, so the   * $includes array will take precedence over the $excludes array. If you want to  * only choose fields to exclude, leave $includes an empty array().   *  * @usage: $this->mongo_db->select(array(&#39;foo&#39;, &#39;bar&#39;))->get(&#39;foobar&#39;);  */
  public function select($includes = array(), $excludes = array()) {
    if (!is_array($includes)) {
      $includes = array();
    }
    if (!is_array($excludes)) {
      $excludes = array();
    }
    if (!emptyempty($includes)) {
      foreach ($includes as $col) {
        $this->selects[$col] = 1;
      }
    } else {
      foreach ($excludes as $col) {
        $this->selects[$col] = 0;
      }
    } return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE PARAMETERS   * --------------------------------------------------------------------------------   *  * Get the documents based on these search parameters. The $wheres array should  * be an associative array with the field as the key and the value as the search  * criteria.  *  * @usage = $this->mongo_db->where(array(&#39;foo&#39; => &#39;bar&#39;))->get(&#39;foobar&#39;);  */
  public function where($wheres = array()) {
    foreach ((array)$wheres as $wh => $val) {
      $this->wheres[$wh] = $val;
    } return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE_IN PARAMETERS * --------------------------------------------------------------------------------   *  * Get the documents where the value of a $field is in a given $in array().   *  * @usage = $this->mongo_db->where_in(&#39;foo&#39;, array(&#39;bar&#39;, &#39;zoo&#39;, &#39;blah&#39;))->get(&#39;foobar&#39;); */
  public function where_in($field = "", $in = array()) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$in&#39;] = $in;
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE_NOT_IN PARAMETERS * --------------------------------------------------------------------------------   *  * Get the documents where the value of a $field is not in a given $in array().   *  * @usage = $this->mongo_db->where_not_in(&#39;foo&#39;, array(&#39;bar&#39;, &#39;zoo&#39;, &#39;blah&#39;))->get(&#39;foobar&#39;); */
  public function where_not_in($field = "", $in = array()) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$nin&#39;] = $in;
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE GREATER THAN PARAMETERS  * --------------------------------------------------------------------------------   *  * Get the documents where the value of a $field is greater than $x   *  * @usage = $this->mongo_db->where_gt(&#39;foo&#39;, 20);   */
  public function where_gt($field = "", $x) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$gt&#39;] = $x;
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE GREATER THAN OR EQUAL TO PARAMETERS  * --------------------------------------------------------------------------------   *  * Get the documents where the value of a $field is greater than or equal to $x   *  * @usage = $this->mongo_db->where_gte(&#39;foo&#39;, 20);  */
  public function where_gte($field = "", $x) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$gte&#39;] = $x;
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE LESS THAN PARAMETERS  * --------------------------------------------------------------------------------   *  * Get the documents where the value of a $field is less than $x  *  * @usage = $this->mongo_db->where_lt(&#39;foo&#39;, 20);   */
  public function where_lt($field = "", $x) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$lt&#39;] = $x;
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE LESS THAN OR EQUAL TO PARAMETERS  * --------------------------------------------------------------------------------   *  * Get the documents where the value of a $field is less than or equal to $x  *  * @usage = $this->mongo_db->where_lte(&#39;foo&#39;, 20);  */
  public function where_lte($field = "", $x) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$lte&#39;] = $x;
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE BETWEEN PARAMETERS   * --------------------------------------------------------------------------------   *  * Get the documents where the value of a $field is between $x and $y  *  * @usage = $this->mongo_db->where_between(&#39;foo&#39;, 20, 30);  */
  public function where_between($field = "", $x, $y) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$gte&#39;] = $x;
    $this->wheres[$field][&#39;$lte&#39;] = $y;
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE BETWEEN AND NOT EQUAL TO PARAMETERS  * --------------------------------------------------------------------------------   *  * Get the documents where the value of a $field is between but not equal to $x and $y *  * @usage = $this->mongo_db->where_between_ne(&#39;foo&#39;, 20, 30);   */
  public function where_between_ne($field = "", $x, $y) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$gt&#39;] = $x;
    $this->wheres[$field][&#39;$lt&#39;] = $y;
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE NOT EQUAL TO PARAMETERS  * --------------------------------------------------------------------------------   *  * Get the documents where the value of a $field is not equal to $x   *  * @usage = $this->mongo_db->where_between(&#39;foo&#39;, 20, 30);  */
  public function where_ne($field = "", $x) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$ne&#39;] = $x;
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE OR   * --------------------------------------------------------------------------------   *  * Get the documents where the value of a $field is in one or more values  *  * @usage = $this->mongo_db->where_or(&#39;foo&#39;, array( &#39;foo&#39;, &#39;bar&#39;, &#39;blegh&#39; ); */
  public function where_or($field = "", $values) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$or&#39;] = $values;
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE AND  * --------------------------------------------------------------------------------   *  * Get the documents where the elements match the specified values *  * @usage = $this->mongo_db->where_and( array ( &#39;foo&#39; => 1, &#39;b&#39; => &#39;someexample&#39; );   */
  public function where_and($elements_values = array()) {
    foreach ((array)$elements_values as $element => $val) {
      $this->wheres[$element] = $val;
    } return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE MOD  * --------------------------------------------------------------------------------   *  * Get the documents where $field % $mod = $result *  * @usage = $this->mongo_db->where_mod( &#39;foo&#39;, 10, 1 );  */
  public function where_mod($field, $num, $result) {
    $this->where_init($field);
    $this->wheres[$field][&#39;$mod&#39;] = array($num, $result);
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------  *  Where size *  --------------------------------------------------------------------------------  *  *  Get the documents where the size of a field is in a given $size int *  *  @usage : $this->mongo_db->where_size(&#39;foo&#39;, 1)->get(&#39;foobar&#39;); */
  public function where_size($field = "", $size = "") {
    $this->_where_init($field);
    $this->wheres[$field][&#39;$size&#39;] = $size;
    return ($this);
  }

  /**   *  --------------------------------------------------------------------------------   * LIKE PARAMETERS * --------------------------------------------------------------------------------   *    * Get the documents where the (string) value of a $field is like a value. The defaults   * allow for a case-insensitive search.   *  * @param $flags  * Allows for the typical regular expression flags:   *   i = case insensitive   *   m = multiline  *   x = can contain comments   *   l = locale  *   s = dotall, "." matches everything, including newlines  *   u = match unicode  *  * @param $enable_start_wildcard  * If set to anything other than TRUE, a starting line character "^" will be prepended * to the search value, representing only searching for a value at the start of   * a new line. *  * @param $enable_end_wildcard * If set to anything other than TRUE, an ending line character "$" will be appended  * to the search value, representing only searching for a value at the end of  * a line. *  * @usage = $this->mongo_db->like(&#39;foo&#39;, &#39;bar&#39;, &#39;im&#39;, FALSE, TRUE);  */
  public function like($field = "", $value = "", $flags = "i", $enable_start_wildcard = TRUE, $enable_end_wildcard = TRUE) {
    $field = (string) trim($field);
    $this->where_init($field);
    $value = (string) trim($value);
    $value = quotemeta($value);
    if ($enable_start_wildcard !== TRUE) {
      $value = "^" . $value;
    } if ($enable_end_wildcard !== TRUE) {
      $value .= "$";
    } $regex = "/$value/$flags";
    $this->wheres[$field] = new MongoRegex($regex);
    return($this);
  }

  public function wheres($where){
    $this->wheres = $where;
  }

  /**   *  --------------------------------------------------------------------------------   * ORDER BY PARAMETERS * --------------------------------------------------------------------------------   *  * Sort the documents based on the parameters passed. To set values to descending order,  * you must pass values of either -1, FALSE, &#39;desc&#39;, or &#39;DESC&#39;, else they will be  * set to 1 (ASC). *  * @usage = $this->mongo_db->where_between(&#39;foo&#39;, 20, 30);  */
  public function order_by($fields = array()) {
    if (!is_array($fields) || !count($fields)) return ;
    foreach ($fields as $col => $val) {
      if ($val == -1 || $val === FALSE || strtolower($val) == &#39;desc&#39;) {
        $this->sorts[$col] = -1;
      } else {
        $this->sorts[$col] = 1;
      }
    } return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * LIMIT DOCUMENTS * --------------------------------------------------------------------------------   *  * Limit the result set to $x number of documents  *  * @usage = $this->mongo_db->limit($x);  */
  public function limit($x = 99999) {
    if ($x !== NULL && is_numeric($x) && $x >= 1) {
      $this->limit = (int) $x;
    } return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * OFFSET DOCUMENTS   * --------------------------------------------------------------------------------   *  * Offset the result set to skip $x number of documents   *  * @usage = $this->mongo_db->offset($x); */
  public function offset($x = 0) {
    if ($x !== NULL && is_numeric($x) && $x >= 1) {
      $this->offset = (int) $x;
    } return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * GET_WHERE  * --------------------------------------------------------------------------------   *  * Get the documents based upon the passed parameters  *  * @usage = $this->mongo_db->get_where(&#39;foo&#39;, array(&#39;bar&#39; => &#39;something&#39;));  */
  public function get_where($collection = "", $where = array(), $limit = 99999, $orderby=array()) {
    if (is_array($orderby) || !emptyempty($orderby)) {
      $order_by = $this->order_by($order_by);
    }
    return($this->where($where)->limit($limit)->get($collection));
  }
  public function selectA($collection = "", $limit = 99999, $orderby=array()) {
    if(intval($limit)<1){
      $limit = 999999;
    }
    $order_by = $this->order_by($orderby);
    $re = $this->limit($limit)->get($collection);
    $this->clear();
    return (array)$re;
  }

  public function listinfo($collection = "", $orderby=array(), $page=1, $pagesize=12) {
    $page = max(intval($page), 1);
    $offset = $pagesize * ($page - 1);
    $pagesizes = $offset + $pagesize;
    $this->offset($offset);
    $order_by = $this->order_by($orderby);
    $re = $this->limit($pagesize)->get($collection);
    $this->limit(999999);
    $count = $this->count($collection);
    $this->pages = pages($count, $page, $pagesize);
    return (array)$re;
  }

  /**   *  --------------------------------------------------------------------------------   * GET * --------------------------------------------------------------------------------   *  * Get the documents based upon the passed parameters  *  * @usage = $this->mongo_db->get(&#39;foo&#39;, array(&#39;bar&#39; => &#39;something&#39;)); */
  public function get($collection = "") {
    if (emptyempty($collection)) {
      $this->error("In order to retreive documents from MongoDB, a collection name must be passed", 500);
    } $results = array();
    $documents = $this->db->{$collection}->find($this->wheres, $this->selects)->limit((int) $this->limit)->skip((int) $this->offset)->sort($this->sorts);
    $returns = array();
    foreach ($documents as $doc): $returns[] = $doc;
    endforeach;
    return($returns);
  }

  public function getMy($collection = "") {
    if (emptyempty($collection)) {
      $this->error("In order to retreive documents from MongoDB, a collection name must be passed", 500);
    } $results = array();
    $documents = $this->db->{$collection}->find($this->wheres, $this->selects)->limit((int) $this->limit)->skip((int) $this->offset)->sort($this->sorts);
    $returns = array();
    foreach ($documents as $doc): $returns[] = $doc;
    endforeach;
    $this -> clear();
    return($returns);
  }

  /**   *  --------------------------------------------------------------------------------   * COUNT  * --------------------------------------------------------------------------------   *  * Count the documents based upon the passed parameters   *  * @usage = $this->mongo_db->get(&#39;foo&#39;); */
  public function count($collection = "") {
    if (emptyempty($collection)) {
      $this->error("In order to retreive a count of documents from MongoDB, a collection name must be passed", 500);
    } $count = $this->db->{$collection}->find($this->wheres)->limit((int) $this->limit)->skip((int) $this->offset)->count();
    $this->clear();
    return($count);
  }

  /**   *  --------------------------------------------------------------------------------   * INSERT  * --------------------------------------------------------------------------------   *  * Insert a new document into the passed collection   *  * @usage = $this->mongo_db->insert(&#39;foo&#39;, $data = array()); */
  public function insert($collection = "", $data = array(), $name=&#39;ID&#39;) {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection selected to insert into", 500);
    } if (count($data) == 0 || !is_array($data)) {
      $this->error("Nothing to insert into Mongo collection or insert is not an array", 500);
    } try {
      /**
      wxcity_base::load_sys_class(&#39;whtysqs&#39;,&#39;&#39;,0);
      $mongoseq_class = new whtysqs(&#39;creaseidsqs&#39;);
      $re = $mongoseq_class->query("?name=" . $collection . "&opt=put&data=1");
       **/
      $re = put_sqs(&#39;list_mongo_creaseidsqs&#39;,&#39;1&#39;);
      if(is_numeric($re)){
        $re++;
        $data[$name] = intval($re);
      }else{
        $data[$name] = intval(time());
        //die(&#39;mongosqs error&#39;);
      }
      $this->db->{$collection}->insert($data, array(&#39;fsync&#39; => TRUE));
      $this->clear();
      return $data[$name];
    } catch (MongoCursorException $e) {
      $this->error("Insert of data into MongoDB failed: {$e->getMessage()}", 500);
    }
  }

  public function insertWithId($collection = "", $data = array()) {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection selected to insert into", 500);
    } if (count($data) == 0 || !is_array($data)) {
      $this->error("Nothing to insert into Mongo collection or insert is not an array", 500);
    } try {
      $this->db->{$collection}->insert($data, array(&#39;fsync&#39; => TRUE));
      $this->clear();
      return 1;
    } catch (MongoCursorException $e) {
      $this->error("Insert of data into MongoDB failed: {$e->getMessage()}", 500);
    }
  }
  /**   *  --------------------------------------------------------------------------------   * UPDATE  * --------------------------------------------------------------------------------   *  * Update a document into the passed collection   *  * @usage = $this->mongo_db->update(&#39;foo&#39;, $data = array()); */
  public function update($collection = "", $data = array()) {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection selected to update", 500);
    } if (count($data) == 0 || !is_array($data)) {
      $this->error("Nothing to update in Mongo collection or update is not an array", 500);
    } try {
      $this->db->{$collection}->update($this->wheres, array(&#39;$set&#39; => $data), array(&#39;fsync&#39; => TRUE, &#39;multiple&#39; => FALSE));
      $this->clear();
      return(TRUE);
    } catch (MongoCursorException $e) {
      $this->error("Update of data into MongoDB failed: {$e->getMessage()}", 500);
    }
  }

  /**   *  --------------------------------------------------------------------------------   * UPDATE_ALL  * --------------------------------------------------------------------------------   *  * Insert a new document into the passed collection   *  * @usage = $this->mongo_db->update_all(&#39;foo&#39;, $data = array()); */
  public function update_all($collection = "", $data = array()) {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection selected to update", 500);
    } if (count($data) == 0 || !is_array($data)) {
      $this->error("Nothing to update in Mongo collection or update is not an array", 500);
    } try {
      $this->db->{$collection}->update($this->wheres, array(&#39;$set&#39; => $data), array(&#39;fsync&#39; => TRUE, &#39;multiple&#39; => TRUE));
      return(TRUE);
    } catch (MongoCursorException $e) {
      $this->error("Update of data into MongoDB failed: {$e->getMessage()}", 500);
    }
  }

  /**   *  --------------------------------------------------------------------------------   * DELETE  * --------------------------------------------------------------------------------   *  * delete document from the passed collection based upon certain criteria  *  * @usage = $this->mongo_db->delete(&#39;foo&#39;, $data = array()); */
  public function delete($collection = "") {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection selected to delete from", 500);
    } try {
      $this->db->{$collection}->remove($this->wheres, array(&#39;fsync&#39; => TRUE, &#39;justOne&#39; => TRUE));
      $this->clear();
      return(TRUE);
    } catch (MongoCursorException $e) {
      $this->error("Delete of data into MongoDB failed: {$e->getMessage()}", 500);
    }
  }

  /**   *  --------------------------------------------------------------------------------   * DELETE_ALL  * --------------------------------------------------------------------------------   *  * Delete all documents from the passed collection based upon certain criteria *  * @usage = $this->mongo_db->delete_all(&#39;foo&#39;, $data = array()); */
  public function delete_all($collection = "") {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection selected to delete from", 500);
    } try {
      $this->db->{$collection}->remove($this->wheres, array(&#39;fsync&#39; => TRUE, &#39;justOne&#39; => FALSE));
      return(TRUE);
    } catch (MongoCursorException $e) {
      $this->error("Delete of data into MongoDB failed: {$e->getMessage()}", 500);
    }
  }

  /**   *  --------------------------------------------------------------------------------   * ADD_INDEX  * --------------------------------------------------------------------------------   *  * Ensure an index of the keys in a collection with optional parameters. To set values to descending order,   * you must pass values of either -1, FALSE, &#39;desc&#39;, or &#39;DESC&#39;, else they will be  * set to 1 (ASC). *  * @usage = $this->mongo_db->add_index($collection, array(&#39;first_name&#39; => &#39;ASC&#39;, &#39;last_name&#39; => -1), array(&#39;unique&#39; => TRUE));  */
  public function add_index($collection = "", $keys = array(), $options = array()) {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection specified to add index to", 500);
    } if (emptyempty($keys) || !is_array($keys)) {
      $this->error("Index could not be created to MongoDB Collection because no keys were specified", 500);
    } foreach ($keys as $col => $val) {
      if ($val == -1 || $val === FALSE || strtolower($val) == &#39;desc&#39;) {
        $keys[$col] = -1;
      } else {
        $keys[$col] = 1;
      }
    } if ($this->db->{$collection}->ensureIndex($keys, $options) == TRUE) {
      $this->clear();
      return($this);
    } else {
      $this->error("An error occured when trying to add an index to MongoDB Collection", 500);
    }
  }

  /**   *  --------------------------------------------------------------------------------   * REMOVE_INDEX   * --------------------------------------------------------------------------------   *  * Remove an index of the keys in a collection. To set values to descending order, * you must pass values of either -1, FALSE, &#39;desc&#39;, or &#39;DESC&#39;, else they will be  * set to 1 (ASC). *  * @usage = $this->mongo_db->remove_index($collection, array(&#39;first_name&#39; => &#39;ASC&#39;, &#39;last_name&#39; => -1));  */
  public function remove_index($collection = "", $keys = array()) {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection specified to remove index from", 500);
    } if (emptyempty($keys) || !is_array($keys)) {
      $this->error("Index could not be removed from MongoDB Collection because no keys were specified", 500);
    } if ($this->db->{$collection}->deleteIndex($keys, $options) == TRUE) {
      $this->clear();
      return($this);
    } else {
      $this->error("An error occured when trying to remove an index from MongoDB Collection", 500);
    }
  }

  /**   *  --------------------------------------------------------------------------------   * REMOVE_ALL_INDEXES  * --------------------------------------------------------------------------------   *  * Remove all indexes from a collection.  *  * @usage = $this->mongo_db->remove_all_index($collection);  */
  public function remove_all_indexes($collection = "") {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection specified to remove all indexes from", 500);
    } $this->db->{$collection}->deleteIndexes();
    $this->clear();
    return($this);
  }

  /**   *  --------------------------------------------------------------------------------   * LIST_INDEXES   * --------------------------------------------------------------------------------   *  * Lists all indexes in a collection.  *  * @usage = $this->mongo_db->list_indexes($collection);  */
  public function list_indexes($collection = "") {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection specified to remove all indexes from", 500);
    } return($this->db->{$collection}->getIndexInfo());
  }

  /**   *  --------------------------------------------------------------------------------   * DROP COLLECTION * --------------------------------------------------------------------------------   *  * Removes the specified collection from the database. Be careful because this   * can have some very large issues in production!  */
  public function drop_collection($collection = "") {
    if (emptyempty($collection)) {
      $this->error("No Mongo collection specified to drop from database", 500);
    } $this->db->{$collection}->drop();
    return TRUE;
  }

  /**   *  --------------------------------------------------------------------------------   * CLEAR  * --------------------------------------------------------------------------------   *  * Resets the class variables to default settings  */
  private function clear() {
    $this->selects = array();
    $this->wheres = array();
    $this->limit = NULL;
    $this->offset = NULL;
    $this->sorts = array();
  }

  /**   *  --------------------------------------------------------------------------------   * WHERE INITIALIZER  * --------------------------------------------------------------------------------   *  * Prepares parameters for insertion in $wheres array().  */
  private function where_init($param) {
    if (!isset($this->wheres[$param])) {
      $this->wheres[$param] = array();
    }
  }

  public function error($str, $t) {
    echo $str;
    exit;
  }

}

?>
로그인 후 복사

사용 예:

$table_name=trim(strtolower($this->table_name));
$this->mongo_db->where($where);
$order=!emptyempty($order)?array(&#39;AID&#39;=>&#39;DESC&#39;):array(&#39;AID&#39;=>&#39;ASC&#39;);//升序降序
$infos=$this->mongo_db->listinfo($table_name,$order,$page,$pagesize);
로그인 후 복사


관련 권장 사항:

PHP+mongoDB 데이터베이스 작업 단계에 대한 자세한 설명

Node.js에서 mongodb 데이터베이스를 작동하는 방법

Node.js에서 MongoDB 데이터베이스를 작동하는 방법

위 내용은 PHP에서 mongodb 데이터베이스를 캡슐화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CSRF (Cross-Site Request Grospory) 란 무엇이며 PHP에서 CSRF 보호를 어떻게 구현합니까? CSRF (Cross-Site Request Grospory) 란 무엇이며 PHP에서 CSRF 보호를 어떻게 구현합니까? Apr 07, 2025 am 12:02 AM

PHP에서는 예측할 수없는 토큰을 사용하여 CSRF 공격을 효과적으로 방지 할 수 있습니다. 특정 방법은 다음과 같습니다. 1. 형태로 CSRF 토큰을 생성하고 포함시킨다. 2. 요청을 처리 할 때 토큰의 유효성을 확인하십시오.

클래스가 확장되지 않거나 방법이 PHP에서 무시되지 않도록하려면 어떻게해야합니까? (최종 키워드) 클래스가 확장되지 않거나 방법이 PHP에서 무시되지 않도록하려면 어떻게해야합니까? (최종 키워드) Apr 08, 2025 am 12:03 AM

PHP에서 최종 키워드는 클래스가 상속되고 메소드가 덮어 쓰는 것을 방지하는 데 사용됩니다. 1) 클래스를 최종적으로 표시 할 때는 수업을 상속받을 수 없습니다. 2) 메소드를 최종으로 표시 할 때는 메소드를 서브 클래스로 다시 작성할 수 없습니다. 최종 키워드를 사용하면 코드의 안정성과 보안이 보장됩니다.

PHP 함수 인수 및 배열 풀기에서 ... (SPLAT) 연산자의 목적과 사용을 설명하십시오. PHP 함수 인수 및 배열 풀기에서 ... (SPLAT) 연산자의 목적과 사용을 설명하십시오. Apr 06, 2025 am 12:07 AM

PHP의 ... (SPLAT) 연산자는 기능 매개 변수 및 배열을 포장하여 코드 단순성 및 효율성을 향상시키는 데 사용됩니다. 1) 함수 매개 변수 풀기 : 배열 요소를 함수로 매개 변수로 전달합니다. 2) 배열 풀기 : 배열을 다른 배열 또는 함수 매개 변수로 포장합니다.

php에서 엄격한 유형을 설명하십시오 (strict_types = 1);). php에서 엄격한 유형을 설명하십시오 (strict_types = 1);). Apr 07, 2025 am 12:05 AM

php의 엄격한 유형은 declare (strict_types = 1)를 추가하여 활성화됩니다. 파일 상단에서. 1) 함정 유형 변환을 방지하기 위해 함수 매개 변수 및 리턴 값의 검사 유형 검사를 강요합니다. 2) 엄격한 유형을 사용하면 코드의 신뢰성과 예측 가능성을 향상시키고 버그를 줄이며 유지 관리 및 가독성을 향상시킬 수 있습니다.

MySQL : 쉽게 학습하기위한 간단한 개념 MySQL : 쉽게 학습하기위한 간단한 개념 Apr 10, 2025 am 09:29 AM

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

PHP의 미래 : 적응 및 혁신 PHP의 미래 : 적응 및 혁신 Apr 11, 2025 am 12:01 AM

PHP의 미래는 새로운 기술 트렌드에 적응하고 혁신적인 기능을 도입함으로써 달성 될 것입니다. 1) 클라우드 컴퓨팅, 컨테이너화 및 마이크로 서비스 아키텍처에 적응, Docker 및 Kubernetes 지원; 2) 성능 및 데이터 처리 효율을 향상시키기 위해 JIT 컴파일러 및 열거 유형을 도입합니다. 3) 지속적으로 성능을 최적화하고 모범 사례를 홍보합니다.

PHP vs. Python : 차이점 이해 PHP vs. Python : 차이점 이해 Apr 11, 2025 am 12:15 AM

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

MongoDB 데이터베이스 비밀번호를 보는 Navicat의 방법 MongoDB 데이터베이스 비밀번호를 보는 Navicat의 방법 Apr 08, 2025 pm 09:39 PM

해시 값으로 저장되기 때문에 MongoDB 비밀번호를 Navicat을 통해 직접 보는 것은 불가능합니다. 분실 된 비밀번호 검색 방법 : 1. 비밀번호 재설정; 2. 구성 파일 확인 (해시 값이 포함될 수 있음); 3. 코드를 점검하십시오 (암호 하드 코드 메일).

See all articles