php操作mongodb封装类与用法实例

php操作mongodb封装类与用法。具体如下:

近来学习了mongodb,刚好是做php开发的,随便写了php操作mongodb的封装类.

  <?php  /**   * Created by PhpStorm.   * User: lee   * Date: 2016/10/24   * Time: 13:49   */  namespace AppHttpControllersApi;  use AppHttpCommonReturnApi;  /*   *   *   mongdb常规操作   */  class MongdbCommonController  {    private static $conn;    private static $mon;    private static $error;    private function __construct(){      //self::$conn = new MongoClient("mongodb://".env('MONGDB_USER').":".env('MONGDB_PASS')."@".env('MONGDB_HOST').":".env('MONGDB_PORT')."/".env('MONGDB_DB'));      self::$conn = new MongoClient("mongodb://".env('MONGDB_USER').":".env('MONGDB_PASS')."@".env('MONGDB_HOST').":".env('MONGDB_PORT'));      //self::$conn = new MongoClient("mongodb://".env('MONGDB_HOST').":".env('MONGDB_PORT'));      $db = env('MONGDB_DB');      self::$mon = self::$conn->$db;    }    public static function getInstance(){      if(!(self::$conn instanceof self)){        self::$conn = new self();      }      //return self::$conn->mydb;      return self::$conn;    }    private function __clone(){      trigger_error('Clone is not allowed');    }//禁止克隆    //创建索引    public function ensureIndex($table, $index, $index_param=array())    {      $index_param['safe'] = 1;      try {        self::$mon->$table->ensureIndex($index, $index_param);        return true;      }      catch (MongoCursorException $e)      {        self::$error = $e->getMessage();        return false;      }    }    //添加    public function insert($table,$arr){      try {        self::$mon->$table->insert($arr, array('w'=>true));        return true;      }      catch (MongoCursorException $e)      {        self::$error = $e->getMessage();        return false;      }    }    //更新    public function update($table, $condition, $new_arr, $options=array())    {      $options['w'] = 1;      if (!isset($options['multiple']))      {        $options['multiple'] = 0;      }      try {        self::$mon->$table->update($condition, $new_arr, $options);        return true;      }      catch (MongoCursorException $e)      {        self::$error = $e->getMessage();        return false;      }    }    //删除    public function remove($table, $condition, $options=array())    {      $options['w'] = 1;      try {        self::$mon->$table->remove($condition, $options);        return true;      }      catch (MongoCursorException $e)      {        self::$error = $e->getMessage();        return false;      }    }    //查找    public function find($table, $query_condition, $result_condition=array(), $fields=array())    {      $cursor = self::$mon->$table->find($query_condition, $fields);      if (!empty($result_condition['start']))      {        $cursor->skip($result_condition['start']);      }      if (!empty($result_condition['limit']))      {        $cursor->limit($result_condition['limit']);      }      if (!empty($result_condition['sort']))      {        $cursor->sort($result_condition['sort']);      }      $result = array();      try {        while ($cursor->hasNext())        {          $result[] = $cursor->getNext();        }      }      catch (MongoCursorTimeoutException $e)      {        self::$error = $e->getMessage();        return false;      }      return $result;    }    //查找一条记录    public function findOne($table, $condition, $fields=array())    {      return self::$mon->$table->findOne($condition, $fields);    }    //返回表的记录数    public function count($table)    {      return self::$mon->$table->count();    }    //返回错误信息    public function getError()    {      return self::$error;    }  }

操作实例:

  use AppHttpControllersApiMongdbCommonController;  $db = MongdbCommonController::getInstance();  $collection = 'tab';  $data = array('tt' =>'sdsd',   'pp'  => 'ssdsdf');  //返回记录数  echo $db->count($collection);  //插入记录  $db->insert($collection, array("id"=>2, "title"=>"asdqw"));  //更新  $db->update($collection, array("id"=>2),array('tt'=>'dfdfd',"gg"=>"bbb",'hh'=>'dfsdsd'));  //查找记录  echo '<pre>';  print_r( $db->find($collection, array("tt"=>'dfdfd'), array("start"=>1,"limit"=>4)));  //删除  $db->remove($collection, array('tt' =>'sdsd'));
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论