时间:2021-07-01 10:21:17 帮助过:25人阅读
- <?php
- include_once dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.‘Config‘.DIRECTORY_SEPARATOR.‘database.php‘;
- class MongoClass3{
- static public $conn;//数据库连接
- static public $db;//数据库选择
- static public $collection;//结果集合
- public $debug;
- public function __construct($type=0){
- $database=‘‘;
- $database = new DATABASE_CONFIG();
- if($type==1){
- $mongo_master = $database->mongo_hems3;
- }else if($type==2) {
- $mongo_master = $database->mongo162;
- }else if($type == 3) {
- $mongo_master = $database->mongo_yuanchuang;
- } else if($type==5) {
- $mongo_master = $database->mongo_backup;
- }
- else if($type == 0){
- $mongo_master = $database->mongo;
- }
- $host_master = $mongo_master[‘host‘];
- $database = $mongo_master[‘database‘];
- $port = $mongo_master[‘port‘];
- $this->debug = true;
- // $this->conn = new Mongo("mongodb://${username}:${password}@${host}");
- // $this->conn = new Mongo("mongodb://${host_master},${host_slave}",array("replicaSet" => "shard"));
- try{
- $this->conn = new Mongo("mongodb://${host_master}:${port}");
- }catch(Exception $e){
- $str = $e."\r\n".date(‘Y-m-d H:i:s‘,time())." 连接mongo失败\r\n";
- $this->getMongoLogo($str);
- return false;
- }
- // $this->conn=$db->admin;
- // $this->conn->authenticate(‘root‘, ‘123456‘);
- $this->db = $this->conn->{$database};
- }
- /**
- * Description 查询配置表hems_basic记录数 可按条件查询记录数
- * @param Array $conditions 可为空 条件格式为数组 array(‘字段1‘=>‘字段值1‘,‘字段2‘=>‘字段值2‘) 表示条件之间是AND关系
- * @return int $count
- *
- */
- public function getCount($collection,$conditions = array()){
- $this->collection = $this->db->{$collection};
- $count = $this->collection->find($conditions)->count();
- return $count;
- }
- /**
- * Description 根据条件查询配置表hems_basic文档
- * @param Array $conditions 可为空 条件格式为数组 array(‘字段1‘=>‘字段值1‘,‘字段2‘=>‘字段值2‘) 表示条件之间是AND关系
- * @return Array $res 返回的结果是mongo对象需要遍历才能取出数据
- *
- */
- public function getData($collection,$conditions = array(),$field=array(),$order=array(),$start=0,$pernum=20){
- $this->collection = $this->db->{$collection};
- if(empty($collection)){
- return false;
- }
- try {
- if($start==1&&$pernum==0){
- if($order){
- $res = $this->collection->find($conditions,$field)->slaveOkay(true)->sort($order);
- }else{
- $res = $this->collection->find($conditions,$field)->slaveOkay(true);
- }
- }else{
- if($order){
- $res = $this->collection->find($conditions,$field)->slaveOkay(true)->sort($order)->skip($start)->limit($pernum);
- }else{
- $res = $this->collection->find($conditions,$field)->slaveOkay(true)->skip($start)->limit($pernum);
- }
- }
- }catch(Exception $e){
- $res = array();
- $str = date(‘Y-m-d H:i:s‘,time())." 从集合".$collection."获取数据\r\n条件为:\r\n";
- $str1= ‘‘;
- foreach($conditions as $key => $val){
- $str1.= $key."------------".$val."\r\n";
- }
- $this->getMongoLogo($str.$str1."失败\r\n");
- return false;
- }
- try{
- $res->rewind();
- }catch(Exception $e){
- $str = date(‘Y-m-d H:i:s‘,time())." 从集合".$collection."获取数据\r\n条件为:\r\n";
- $str1= ‘‘;
- foreach($conditions as $key => $val){
- $str1.= $key."------------".$val."\r\n";
- }
- $this->getMongoLogo($str.$str1."失败\r\n");
- return false;
- }
- if($res->valid()){
- return iterator_to_array($res,true);
- }else{
- return false;
- }
- }
- /**
- * Description 根据条件查询配置表hems_basic文档
- * @param Array $conditions 可为空 条件格式为数组 array(‘字段1‘=>‘字段值1‘,‘字段2‘=>‘字段值2‘) 表示条件之间是AND关系
- * @return Array $res 返回的结果是mongo对象需要遍历才能取出数据
- *
- */
- public function getDataOr($collection,$conditions){
- $this->collection = $this->db->{$collection};
- $res = $this->collection->find(array(‘$or‘=>$conditions));
- return $res;
- }
- /**
- * Description 计算数据表中所有文档数(按条件计算,无条件计算整个集合的总数)
- * @param Array $conditions 可为空 条件格式为数组 array(‘字段1‘=>‘字段值1‘,‘字段2‘=>‘字段值2‘) 表示条件之间是AND关系
- * @return int $count
- */
- public function getIdDataCount($collection,$conditions = array()){
- $this->collection = $this->db->{$collection};
- $count = $this->collection->find($conditions)->count();
- return $count;
- }
- /**
- * Description 根据条件或者配置表中的_id到hems_data数据表中取出对应所有文档文档
- * @param Array $conditions 可为空 条件格式为数组 array(‘字段1‘=>‘字段值1‘,‘字段2‘=>‘字段值2‘) 表示条件之间是AND关系
- * @return Array $res 返回的结果是mongo对象需要遍历才能取出数据
- */
- public function getIdData($collection,$conditions){
- $this->collection = $this->db->{$collection};
- $res = $this->collection->find($conditions);
- return $res;
- }
- /**
- * Description 根据条件修改数据表文档
- * @param Array $conditions $data $conditions格式为数组 array(‘字段1‘=>‘字段值1‘,‘字段2‘=>‘字段值2‘) 表示多个条件并列
- * $data格式为数组 array(‘字段1‘=>‘字段值1‘,‘字段2‘=>‘字段值2‘) 表示修改的字段
- */
- public function editData($collection,$conditions,$data){
- $this->collection = $this->db->{$collection};
- if($this->collection->update($conditions ,array(‘$set‘=>$data),array(‘multiple‘=>1))){
- $code = 1;
- $msg = ‘修改成功!‘;
- }else{
- $code = 0;
- $msg = ‘修改失败!‘;
- }
- return array(‘code‘=>$code,‘msg‘=>$msg);
- }
- /*
- * Description 根据条件删除数据表文档
- * @param Array $conditions $conditions格式为数组 array(‘字段1‘=>‘字段值1‘,‘字段2‘=>‘字段值2‘) 表示多个条件并列
- */
- public function delData($collection,$conditions){
- $this->collection = $this->db->{$collection};
- if($this->collection->remove($conditions)){
- $code = 1;
- $msg = ‘删除成功!‘;
- }else{
- $code = 0;
- $msg = ‘删除失败!‘;
- }
- return array(‘code‘=>$code,‘msg‘=>$msg);
- }
- /*
- * Description 插入操作
- * 根据主键_id判断,如果该记录已经存在则
- */
- public function save($collection,$field,$flag=0){
- $this->collection = $this->db->{$collection};
- $log = "";
- foreach($field as $kdata => $vdata){
- $log .= $kdata.":".$vdata.",";
- }
- $log = trim($log,",");
- $newLog = "\r\n-------\r\ntime:".date("Y-m-d H:i:s")."\r\ndata".$log;
- $oldLog = file_get_contents("../tmp/mongoLog.txt");
- @file_put_contents("../tmp/mongoLog.txt",$oldLog.$newLog);
- if($flag){
- $result = $this->collection->save($field,array(‘safe‘=>1));
- }else{
- $result = $this->collection->insert($field,array(‘safe‘=>1));
- }
- return $result;
- }
- }
- ?>
本文出自 “PHP程序猿” 博客,请务必保留此出处http://okowo.blog.51cto.com/4923464/1690710
MongoDB操作类PHP代码
标签:mongo;php;