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; }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。