PHP7操作MongoDB的增删改查和分页操作


原文博客地址www.xiegaosheng.com/post/view?id=96;

<?php/** * Class MongodbClient * mongod操作类 *如果需要自己也可以改成单例模式 */class MongodbClient{      protected $mongodb;   protected $dbname;   protected $collection;   protected $bulk;   protected $writeConcern;   public function __construct($config)   {      if (!$config['dbname'] || !$config['collection']) {         # code...         exit('参数错误');      }      $this->mongodb = new MongoDB\Driver\Manager("mongodb://localhost:27017");      $this->dbname = $config['dbname'];      $this->collection = $config['collection'];      $this->bulk = new MongoDB\Driver\BulkWrite();      $this->writeConcern   = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 100);   }    /**     * Created by PhpStorm.     * function: query     * Description:查询方法     * User: Xiaoxie     * Email 736214763@qq.com     * @param array $where     * @param array $option     * @return string     *     */   public function query($where=[],$option=[])   {      $query = new MongoDB\Driver\Query($where,$option);      $result = $this->mongodb->executeQuery("$this->dbname.$this->collection", $query);      $data = [];      if ($result) {         # code...         foreach ($result as $key => $value) {            # code...            array_push($data, $value);         }      }      return json_encode($data);   }    /**     * Created by PhpStorm.     * function: getCount     * Description:获取统计数     * User: Xiaoxie     * Email 736214763@qq.com     * @param array $where     * @return int     *     */   public function getCount($where=[])   {      $command = new MongoDB\Driver\Command(['count' => $this->collection,'query'=>$where]);      $result = $this->mongodb->executeCommand($this->dbname,$command);      $res = $result->toArray();      $cnt = 0;      if ($res) {         # code...         $cnt = $res[0]->n;      }      return $cnt;   }    /**     * Created by PhpStorm.     * function: page     * Description:分页数据     * User: Xiaoxie     * Email 736214763@qq.com     * @param array $where     * @param int $page     * @param int $limit     * @return string     *     */   public function page($where=[],$page=1,$limit=10)   {            $count = $this->getCount($where);      $data['count'] = $count;      $endpage = ceil($count/$limit);      if ($page>$endpage) {         # code...         $page = $endpage;      }elseif ($page <1) {         $page = 1;      }      $skip = ($page-1)*$limit;      $options = [         'skip'=>$skip,          'limit'    => $limit      ];      $data['data'] = $this->query($where,$options);      $data['page'] = $endpage;      return json_encode($data);   }    /**     * Created by PhpStorm.     * function: update     * Description:更新操作     * User: Xiaoxie     * Email 736214763@qq.com     * @param array $where     * @param array $update     * @param bool $upsert     * @return int|null     *     */   public function update($where=[],$update=[],$upsert=false)   {      $this->bulk->update($where,['$set' => $update], ['multi' => true, 'upsert' => $upsert]);      $result = $this->mongodb->executeBulkWrite("$this->dbname.$this->collection", $this->bulk, $this->writeConcern);      return $result->getModifiedCount();   }    /**     * Created by PhpStorm.     * function: insert     * Description:插入     * User: Xiaoxie     * Email 736214763@qq.com     * @param array $data     * @return mixed     *     */   public function insert($data=[])   {      $result = $this->bulk->insert($data);      return $result->getInsertedCount();   }    /**     * Created by PhpStorm.     * function: delete     * Description:删除     * User: Xiaoxie     * Email 736214763@qq.com     * @param array $where     * @param int $limit     * @return mixed     *     */   public function delete($where=[],$limit=1)   {      $result = $this->bulk->delete($where,['limit'=>$limit]);      return $result->getDeletedCount();   }   }//实例化调用$action = $_GET['action']?:exit('参数错误');$page = $_GET['page']?:1;$where = json_decode($_GET['where'],true)?:[];$limit = $_GET['limit']?:'10';$data = json_decode($_GET['data'],true)?:[];$option = json_decode($_GET['option'],true)?:[];$collection = $_GET['collection'];$mongodb = new MongodbClient(['dbname'=>$dbname,'collection'=>$collection]);if ($action=='getCount') {   # code...   $data = $mongodb->getCount($where);}elseif($action=='insert'){   $data = $mongodb->insert($data);}elseif($action=='update'){   $data = $mongodb->update($where,$data);}elseif($action=='delete'){   $data = $mongodb->delete($where);}elseif($action=='query'){   $data = $mongodb->query($where,$option);}elseif($action=='page'){   $data = $mongodb->page($where,$page,$limit);}echo $data;外部调用的时候只需 127.0.0.1/index.php?action=方法&where=等等参数就会返回json

相关文章