MongoCursor Object 游标类
Mongo Configphp配置文件 Tablephp(mongodb操作数据库类文件)
Configphp配置文件
复制代码 代码如下: <?php require_once Zend/Exceptionphp; class Hrs_Mongo_Config { const VERSION = ; const DEFAULT_HOST = localhost; const DEFAULT_PORT = ; private static $host = self::DEFAULT_HOST ; private static $port = self::DEFAULT_PORT ; private static $options = array( connect => true timeout => //replicaSet => //If this is given the master will be determined by using the ismaster database command on the seeds ); public static $conn = ; public static $defaultDb = ; public static $linkStatus = ; public static function set($server = mongodb://localhost: $options = array(connect => true)) { if(!$server){ $url = mongodb://self::$host:self::$port; } if(is_array($server)){ if(isset($server[host])){ self::$host = $server[host]; } if(isset($server[port])){ self::$port = $server[port]; } if(isset($server[user]) && isset($server[pass])){ $url = mongodb://$server[user]:$server[pass]@self::$host:self::$port; }else{ $url = mongodb://self::$host:self::$port; } } if(is_array($options)){ foreach (self::$options as $o_k=>$o_v){ if(isset($options[$o_k])) self::$options[$o_k] = $o_v; } } try{ self::$conn = new Mongo($url self::$options); self::$linkStatus = success; }catch (Exception $e){ self::$linkStatus = failed; } if(isset($server[database])){ self::selectDB($server[database]); } } public static function selectDB($database){ if($database){ try { if(self::$linkStatus==success) self::$defaultDb = self::$conn>selectDB($database); return self::$defaultDb; } catch(InvalidArgumentException $e) { throw new Zend_Exception(Mongodb数据库名称不正确); } }else{ throw new Zend_Exception(Mongodb数据库名称不能为空); } } } Tablephp(mongodb操作数据库类文件)
复制代码 代码如下: <?php require_once Hrs/Mongo/Configphp; abstract class Hrs_Mongo_Table { protected $_db = ; protected $_name = ; protected $_data = array(); protected $c_options = array( fsync=>true safe=>true ); protected $u_options = array( //upsert=>false multiple=>true fsync=>true safe=>true ); /* protected $r_options = array( );*/ protected $d_options = array( fsync=>true justOne=>false safe=>true ); protected function _setAdapter($database=){ if(!$database) throw new Zend_Exception(Mongodb数据库名称不能为空); Hrs_Mongo_Config::selectDB($database); } public function __construct() { if(Hrs_Mongo_Config::$conn instanceof Mongo){ $name = $this>_name; $defDb = Hrs_Mongo_Config::$defaultDb; $this>_db = $defDb>$name; }else{ throw new Zend_Exception(Mongodb服务器连接失败); } } public function insert($data){ if(!$this>testLink()) return false; $ret = $this>_db>insert($data $this>c_options); return $ret; } public function update($data $where){ if(!$this>testLink()) return false; return $this>_db>update($where $data $this>u_options); } public function find($where=array()$limit=){ if($this>testLink()) { if($limit>){ $this>_data = $where ? $this>_db>find($where)>limit($limit)>snapshot() : $this>_db>find()>limit($limit)>snapshot(); }else{ $this>_data = $where ? $this>_db>find($where)>limit($limit)>snapshot() : $this>_db>find()>limit($limit)>snapshot(); } } return $this; } //find cursor /* * 获取游标对象 */ public function look($where=array()$fields=array()){ if($this>testLink()) { if($fields){ return $where ? $this>_db>find($where$fields): $this>_db>find()>fields($fields); }else{ return $where ? $this>_db>find($where) : $this>_db>find(); } } return false; } public function delete($where){ if(!$this>testLink()) return false; return $this>_db>remove($where $this>d_options); } public function dropMe(){ if(!$this>testLink()) return false; return $this>_db>drop(); } public function __toString(){ return $this>_data; } public function toArray(){ $tmpData = array(); foreach($this>_data as $id=>$row){ $one_row = array(); foreach($row as $key=>$col){ $one_row[$key] = $col; } $one_row[_id] = $id; $tmpData[] = $one_row; } return $tmpData; } protected function testLink(){ return Hrs_Mongo_Config::$linkStatus == success ? true :false; } } 要点注意!!! 第一种方法
复制代码 代码如下: //find cursor /* * 获取游标对象 */ public function look($where=array()$fields=array()){ if($this>testLink()) { if($fields){ return $where ? $this>_db>find($where$fields): $this>_db>find()>fields($fields); }else{ return $where ? $this>_db>find($where) : $this>_db>find(); } } return false; } 第二种方法
复制代码 代码如下: public function find($where=array()$field=array()){ if($this>testLink()) { $this>_data = $this>_db>find($where$field)>sort(array("_id" => )); } return $this; }复制代码 代码如下: /* * 获取游标对象 */ public function getCursor(){ return $this>_data; } 第二种需要的是find得到的不是数组 find($where)>getCursor();是MongoCursor Object |