您好,登錄后才能下訂單哦!
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。