PHP7操作MongoDB的增删改查和分页操作
原文博客地址www.xiegaosheng.com/post/view?id=96;

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟主机、营销软件、网站建设、海晏网站维护、网站推广。
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
文章标题:PHP7操作MongoDB的增删改查和分页操作
本文链接:http://www.jxjierui.cn/article/ispoid.html


咨询
建站咨询
