<?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代码
原创文章标签 mongo;PHP; 文章分类 MongoDB 数据库
上一篇:CakePHP使用方法
下一篇:redis五种数据类型应用场景
-
python操作mongodb
python操作mongodb
mongodb python -
ES工具操作测试类
ES工具操作测试类
User System elasticsearch -
php MongoDB 操作示例
php MongoDB 操作示例
php MongoDB -
Mongodb for PHP数据操作
Mongodb的常用操作参看手册,php官方的http://us2.php.net/manual/en/mongo.manual.php 也可以参看mongodb官方的教程 数
Mongodb for PHP数据操作 php Mongodb mysql .net -
php操作目录类
<?phpclass Dir { //打开指定目录 /** * 遍历目录函数,只读取目录中的最外层的内容 * @param string $path
php 文件夹管理 目录管理 sed 重命名