php實現的mongodb操作類_php執行個體

來源:互聯網
上載者:User

mongo_db.php

<?php /** * Created by PhpStorm. * User: yangyulong * Date: 2015/5/26 * Time: 13:45 */class Mongo_db{  private static $instanceof = NULL;  public $mongo;  private $host = 'localhost';  private $port = '27017';   private $db;  public $dbname;  private $table = NULL;   /**   * 初始化類,得到mongo的執行個體對象   */  public function __construct($host = NULL, $port = NULL, $dbname = NULL, $table = NULL)  {     if (NULL === $dbname) {      $this->throwError('集合不可為空!');    }     //判斷是否傳遞了host和port    if (NULL !== $host) {      $this->host = $host;    }     if (NULL !== $port) {      $this->port = $port;    }     $this->table = $table;     $this->mongo = new MongoClient($this->host . ':' . $this->port);    if ($this->getVersion() >= '0.9.0') {      $this->dbname = $this->mongo->selectDB($dbname);      $this->db = $this->dbname->selectCollection($table);    } else {      $this->db = $this->mongo->$dbname->$table;    }  }   public function getVersion()  {    return MongoClient::VERSION;  }   /**   * 單例模式   * @return Mongo|null   */  //public static function getInstance($host=null, $port=null, $dbname=null, $table=null){  //  //  if(!(self::$instanceof instanceof self)){  //    self::$instanceof = new self($host, $port, $dbname, $table);  //  }  //  //  return self::$instanceof;  //}   /**   * 插入一條資料   * @param array $doc   */  public function insert($doc = array())  {    if (empty($doc)) {      $this->throwError('插入的資料不可為空!');    }    //儲存資料資訊    try {      if (!$this->db->insert($doc)) {        throw new MongoException('插入資料失敗');      }    } catch (MongoException $e) {      $this->throwError($e->getMessage());    }  }   /**   * 插入多條資料資訊   * @param array $doc   */  public function insertMulti($doc = array())  {    if (empty($doc)) {      $this->throwError('插入的資料不可為空!');    }    //插入資料資訊    foreach ($doc as $key => $val) {      //判斷$val是不是數組      if (is_array($val)) {        $this->insert($val);      }    }  }   /**   * 尋找一條記錄   * @return array|null   */  public function findOne($where = NULL)  {    if (NULL === $where) {      try {        if ($result = $this->db->findOne()) {          return $result;        } else {          throw new MongoException('尋找資料失敗');        }      } catch (MongoException $e) {        $this->throwError($e->getMessage());      }    } else {      try {        if ($result = $this->db->findOne($where)) {          return $result;        } else {          throw new MongoException('尋找資料失敗');        }      } catch (MongoException $e) {        $this->throwError($e->getMessage());      }    }   }   /**   * todo 帶條件的隨後做   * 尋找所有的文檔   * @return MongoCursor   */  public function find($where = NULL)  {    if (NULL === $where) {       try {        if ($result = $this->db->find()) {         } else {          throw new MongoException('尋找資料失敗');        }      } catch (MongoException $e) {        $this->throwError($e->getMessage());      }    } else {      try {        if ($result = $this->db->find($where)) {         } else {          throw new MongoException('尋找資料失敗');        }      } catch (MongoException $e) {        $this->throwError($e->getMessage());      }    }     $arr = array();    foreach ($result as $id => $val) {      $arr[] = $val;    }     return $arr;  }   /**   * 擷取記錄條數   * @return int   */  public function getCount()  {    try {      if ($count = $this->db->count()) {        return $count;      } else {        throw new MongoException('尋找總數失敗');      }    } catch (MongoException $e) {      $this->throwError($e->getMessage());    }  }   /**   * 擷取所有的資料庫   * @return array   */  public function getDbs()  {    return $this->mongo->listDBs();  }   /**   * 刪除資料庫   * @param null $dbname   * @return mixed   */  public function dropDb($dbname = NULL)  {    if (NULL !== $dbname) {      $retult = $this->mongo->dropDB($dbname);      if ($retult['ok']) {        return TRUE;      } else {        return FALSE;      }    }    $this->throwError('請輸入要刪除的資料庫名稱');  }   /**   * 強制關閉資料庫的連結   */  public function closeDb()  {    $this->mongo->close(TRUE);  }   /**   * 輸出錯誤資訊   * @param $errorInfo 錯誤內容   */  public function throwError($errorInfo='')  {    echo "<h3>出錯了:$errorInfo</h3>";    die();  } }

以上所述就是本文的全部內容了,希望大家能夠喜歡。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.