php操作 mongodb,php操作mongodb

/**

* php操作mongodb

* 127.0.0.1/index.php?action=方法&where=等等参数就会返回json

*/

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 

$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'];//库名.集合名

$dbname = 'local';

$mongodb = new MongodbClient(['dbname' => $dbname, 'collection' => $collection]);

if ($action == 'getCount') {

$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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值