温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-06-12 12:38:07 来源:网络 阅读:2797 作者:谢高升 栏目:web开发


原文博客地址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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI