温馨提示×

温馨提示×

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

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

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

发布时间:2020-06-12 12:38:07 阅读:2778 作者:谢高升 栏目:web开发
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>


原文博客地址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::MAJORITY100);
   }

    /**
     * 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

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

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

AI

开发者交流群×