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代码是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。