首頁 後端開發 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 Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP的未來:改編和創新 PHP的未來:改編和創新 Apr 11, 2025 am 12:01 AM

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

mysql:簡單的概念,用於輕鬆學習 mysql:簡單的概念,用於輕鬆學習 Apr 10, 2025 am 09:29 AM

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

php:死亡還是簡單地適應? php:死亡還是簡單地適應? Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

H5:工具,框架和最佳實踐 H5:工具,框架和最佳實踐 Apr 11, 2025 am 12:11 AM

H5開發需要掌握的工具和框架包括Vue.js、React和Webpack。 1.Vue.js適用於構建用戶界面,支持組件化開發。 2.React通過虛擬DOM優化頁面渲染,適合複雜應用。 3.Webpack用於模塊打包,優化資源加載。

為什麼要使用mysql?利益和優勢 為什麼要使用mysql?利益和優勢 Apr 12, 2025 am 12:17 AM

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

MySQL:數據庫的用戶友好介紹 MySQL:數據庫的用戶友好介紹 Apr 10, 2025 am 09:27 AM

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

MySQL:世界上最受歡迎的數據庫的簡介 MySQL:世界上最受歡迎的數據庫的簡介 Apr 12, 2025 am 12:18 AM

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

See all articles