MongoConfig.php配置文件Table.php(mongodb操作數(shù)據(jù)庫(kù)類文件)

Config.php配置文件復(fù)制代碼 代碼如下:<?phprequire_once 'Zend/Exception.php';class Hrs_Mongo_Config{ const VERSION " /> 快播可乐网,国产盗摄一区二区三区,国产AV视频一区二区蜜桃

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

mongo Table類文件 獲取MongoCursor(游標(biāo))的實(shí)現(xiàn)方法分析

MongoCursor Object
游標(biāo)類

Mongo
Config.php配置文件
Table.php(mongodb操作數(shù)據(jù)庫(kù)類文件)

Config.php配置文件
復(fù)制代碼 代碼如下:
<?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數(shù)據(jù)庫(kù)名稱不正確');
            }
        }else{
            throw new Zend_Exception('Mongodb數(shù)據(jù)庫(kù)名稱不能為空');
        }
    }
}

Table.php(mongodb操作數(shù)據(jù)庫(kù)類文件)
復(fù)制代碼 代碼如下:
<?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數(shù)據(jù)庫(kù)名稱不能為空');
        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服務(wù)器連接失敗');
        }
    }
    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
    /*
     * 獲取游標(biāo)對(duì)象
     */
    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;
    }
}

要點(diǎn)注意!!!
第一種方法
復(fù)制代碼 代碼如下:
    //find cursor
    /*
     * 獲取游標(biāo)對(duì)象
     */
    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;
    }

第二種方法
復(fù)制代碼 代碼如下:
    public function find($where=array(),$field=array()){
        if($this->testLink()) {
            $this->_data = $this->_db->find($where,$field)->sort(array("_id" => -1));
        }
        return $this;
    }

復(fù)制代碼 代碼如下:
    /*
     * 獲取游標(biāo)對(duì)象
     */
    public function getCursor(){
     return $this->_data;
    }

第二種需要的是find得到的不是數(shù)組
find($where)->getCursor();是MongoCursor Object

注意注意
find()返回的是當(dāng)前對(duì)象
toArray()方法是把當(dāng)前對(duì)象轉(zhuǎn)換為數(shù)組
getCursor()方法是把當(dāng)前對(duì)象轉(zhuǎn)換為MongoCursor Object(游標(biāo)對(duì)象)

php技術(shù)mongo Table類文件 獲取MongoCursor(游標(biāo))的實(shí)現(xiàn)方法分析,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 脱jk裙的美女露小内内无遮挡 | 无码乱人伦一区二区亚洲 | 年轻的搜子8中字在线观看 年轻的朋友4在线看中文字幕 | 国产亚洲精品久久久久久国模美 | 国产成人综合视频 | 亚洲国产精品99久久久久久 | 99久久国产露脸精品麻豆 | 制服丝袜 快播 | 99影视久久电影网久久看影院 | 最近的2019中文字幕国语版 | 久久久中日AB精品综合 | 九九热这里有精品 | 少妇性饥渴BBBBBBBBB | 很黄很色60分钟在线观看 | 一个人在线观看的视频 | 久久一区精品 | 99九九精品国产高清自在线 | 火影小南被爆羞羞网站 | 5566av资源| 国产色无码精品视频国产 | 国产亚洲精品字幕在线观看 | 蜜臀色欲AV无人A片一区 | 少女free大陆 | 久久天天躁狠狠躁夜夜躁 | 亚洲日本香蕉视频观看视频 | 亚洲视频在线观看网站 | 国产精品亚洲电影久久成人影院 | 2018高清国产一区二区三区 | 国产精品乱码色情一区二区视频 | 男生插曲女生身全过程 | 国产乱子影视频上线免费观看 | 国产精品无码久久av | 日韩人妻少妇一区二区三区 | 国产午夜精品AV一区二区麻豆 | 人妻仑乱少妇88MAV | 秋霞午夜理论理论福利无码 | 美女脱了内裤张开腿让男人桶到爽 | 入禽太深在线观看免费高清 | 97在线精品视频 | 一级毛片全部免 | 四房色播手机版 |