温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MongoDB操作类PHP代码是怎样的

发布时间:2021-09-26 14:33:18 来源:亿速云 阅读:154 作者:柒染 栏目:MongoDB数据库

MongoDB操作类PHP代码是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<?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;     }     } ?>

关于MongoDB操作类PHP代码是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI