mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2015-01-24信息快讯网
本篇文章是对mongo Table类文件 获取MongoCursor(游标)的实现方法进行了详细的分析介绍,需要的朋友参考下
MongoCursor Object游标类
Mongo
Config.php配置文件
Table.php(mongodb操作数据库类文件)
Config.php配置文件
<?php require_once 'Zend/Exception.php'; class Hrs_Mongo_Config { const VERSION = '1.7.0'; const DEFAULT_HOST = 'localhost'; const DEFAULT_PORT = 27017; private static $host = self::DEFAULT_HOST ; private static $port = self::DEFAULT_PORT ; private static $options = array( 'connect' => true, 'timeout' => 30, //'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:27017', $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数据库名称不能为空'); } } }
Table.php(mongodb操作数据库类文件)
<?php require_once 'Hrs/Mongo/Config.php'; 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=0){ if($this->testLink()) { if($limit>0){ $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" => -1)); } return $this; }
/* * 获取游标对象 */ public function getCursor(){ return $this->_data; }
第二种需要的是find得到的不是数组
find($where)->getCursor();是MongoCursor Object
注意注意
find()返回的是当前对象
toArray()方法是把当前对象转换为数组
getCursor()方法是把当前对象转换为MongoCursor Object(游标对象)
PHP使用imagick读取PDF生成png缩略图的两种方法
PHP fopen()和 file_get_contents()应用与差异介绍
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
zf框架的session会话周期及次数限制使用示例
PHP加Nginx实现动态裁剪图片方案
php function用法如何递归及return和echo区别
php获得url参数中具有&的值的方法
关于js和php对url编码的处理方法
php判断是否为json格式的方法
PHP static局部静态变量和全局静态变量总结
PHP URL参数获取方式的四种例子
PHP中session变量的销毁
php获取bing每日壁纸示例分享
MongoDB在PHP中的常用操作小结
php检测iis环境是否支持htaccess的方法
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
php中simplexml_load_string使用实例分享
php中hashtable实现示例分享
php缓冲 output_buffering和ob_start使用介绍
在wamp集成环境下升级php版本(实现方法)
php5.3 注意事项说明
file_get_contents("php://input", "r")实例介绍
浅析Apache中RewriteCond规则参数的详细介绍
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
解析PHP 使用curl提交json格式数据
解析curl提交GET,POST,Cookie的简单方法
解析PHP的session过期设置
解析php session_set_save_handler 函数的用法(mysql)
使用PHP获取当前url路径的函数以及服务器变量
php setcookie(name, value, expires, path, domain, secure) 参数详解
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
浅析php变量修饰符static的使用
php 去除html标记--strip_tags与htmlspecialchars的区别详解
解析Ubuntu下crontab命令的用法
关于crontab的使用详解
解析php中eclipse 用空格替换 tab键
PHP中mb_convert_encoding与iconv函数的深入解析
PHP操作MongoDB GridFS 存储文件的详解
解析PHP中常见的mongodb查询操作
解析:使用php mongodb扩展时 需要注意的事项