PHP7 mongoDB扩展使用的方法分享
前言
最近在做的项目需要将PHP5.6升级到PHP7.0,使用过PHP-mongo扩展的同学应该知道,PHP7.0的mongodb扩展是完全不兼容PHP5.6的mongo扩展的,php-mongodb改如何使用呢。
下面直接说明各种方法的使用:
1.mongodb连接:
privatefunctionconnect($confArr){
try{
$connStr="mongodb://".$confArr['host'].":".$confArr['port']."/".$confArr['db_name'];
$options=array(
'username'=>$confArr['username'],
'password'=>$confArr['password'],
'readPreference'=>$confArr['read_preference'],
'connectTimeoutMS'=>intval($confArr['connect_timeout_ms']),
'socketTimeoutMS'=>intval($confArr['socket_timeout_ms']),
);
$mc=newMongoDB\Driver\Manager($connStr,$options);
return$mc;
}
catch(Exception$e){
returnfalse;
}
}
2.查询find:
publicfunctionfind($query=array(),$fields=array(),$collection,$sort=array(),$limit=0,$skip=0){
$conn=$this->connect();
if(empty($conn)){
returnfalse;
}
try{
$data=array();
$options=array();
if(!empty($query)){
$options['projection']=array_fill_keys($fields,1);
}
if(!empty($sort)){
$options['sort']=$sort;
}
if(!empty($limit)){
$options['skip']=$skip;
$options['limit']=$limit;
}
$mongoQuery=newMongoDB\Driver\Query($query,$options);
$readPreference=newMongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY);
$cursor=$conn->executeQuery($collection,$mongoQuery,$readPreference);
foreach($cursoras$value){
$data[]=(array)$value;
}
return$data;
}catch(Exception$e){
//记录错误日志
}
returnfalse;
}
3.插入操作insert:
publicfunctioninsert($addArr,$collection){
if(empty($addArr)||!is_array($addArr)){
returnfalse;
}
$conn=$this->connect();
if(empty($conn)){
returnfalse;
}
try{
$bulk=newMongoDB\Driver\BulkWrite();
$bulk->insert($addArr);
$writeConcern=newMongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY,6000);
$result=$conn->executeBulkWrite($collection,$bulk,$writeConcern);
if($result->getInsertedCount()){
returntrue;
}
}catch(Exception$e){
//记录错误日志
}
returnfalse;
}
4.删除delete:
publicfunctiondelete($whereArr,$options=array(),$collection){
if(empty($whereArr)){
returnfalse;
}
if(!isset($options['justOne'])){
$options=array(
'justOne'=>false,
);
}
$conn=$this->connect();
if(empty($conn)){
returnfalse;
}
try{
$bulk=newMongoDB\Driver\BulkWrite();
$bulk->delete($whereArr,$options);
$writeConcern=newMongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY,30000);
$result=$conn->executeBulkWrite($collection,$bulk,$writeConcern);
returntrue;
}catch(Exception$e){
//记录错误日志
}
returnfalse;
}
5.执行command操作:
privatefunctioncommand($params,$dbName){
$conn=$this->connect();
if(empty($conn)){
returnfalse;
}
try{
$cmd=newMongoDB\Driver\Command($params);
$result=$conn->executeCommand($dbName,$cmd);
return$result;
}catch(Exception$e){
//记录错误
}
returnfalse;
}
6.统计count:
publicfunctioncount($query,$collection){
try{
$cmd=array(
'count'=>$collection,
'query'=>$query,
);
$res=$this->command($cmd);
$result=$res->toArray();
return$result[0]->n;
}catch(Exception$e){
//记录错误
}
returnfalse;
}
7.聚合distinct:
publicfunctiondistinct($key,$where,$collection){
try{
$cmd=array(
'distinct'=>$collection,
'key'=>$key,
'query'=>$where,
);
$res=$this->command($cmd);
$result=$res->toArray();
return$result[0]->values;
}catch(Exception$e){
//记录错误
}
returnfalse;
}
8.aggregate操作:
publicfunctionaggregate($where,$group,$collection){
try{
$cmd=array(
'aggregate'=>$collection,
'pipeline'=>array(
array(
'$match'=>$where,
),
array(
'$group'=>$group,
),
),
'explain'=>false,
);
$res=$this->command($cmd);
if(!$res){
returnfalse;
}
$result=$res->toArray();
return$result[0]->total;
}catch(Exception$e){
//记录错误
}
returnfalse;
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。