zoukankan      html  css  js  c++  java
  • PHP Mongodb API参考

    <?php  
    /*** Mongodb类** examples:   
    * $mongo = new HMongodb("127.0.0.1:11223"); 
    * $mongo->selectDb("test_db"); 
    * 创建索引 
    * $mongo->ensureIndex("test_table", array("id"=>1), array('unique'=>true)); 
    * 获取表的记录 
    * $mongo->count("test_table"); 
    * 插入记录 
    * $mongo->insert("test_table", array("id"=>2, "title"=>"asdqw")); 
    * 更新记录 
    * $mongo->update("test_table", array("id"=>1),array("id"=>1,"title"=>"bbb")); 
    * 更新记录-存在时更新,不存在时添加-相当于set 
    * $mongo->update("test_table", array("id"=>1),array("id"=>1,"title"=>"bbb"),array("upsert"=>1)); 
    * 查找记录 
    * $mongo->find("c", array("title"=>"asdqw"), array("start"=>2,"limit"=>2,"sort"=>array("id"=>1))) 
    * 查找一条记录 
    * $mongo->findOne("$mongo->findOne("ttt", array("id"=>1))", array("id"=>1)); 
    * 删除记录 
    * $mongo->remove("ttt", array("title"=>"bbb")); 
    * 仅删除一条记录 
    * $mongo->remove("ttt", array("title"=>"bbb"), array("justOne"=>1)); 
    * 获取Mongo操作的错误信息 
    * $mongo->getError(); 
    */  
      
    class HMongodb {  
      
        //Mongodb连接  
        var $mongo;  
      
        var $curr_db_name;  
        var $curr_table_name;  
        var $error;  
      
        /** 
        * 构造函数 
        * 支持传入多个mongo_server(1.一个出问题时连接其它的server 2.自动将查询均匀分发到不同server) 
        * 
        * 参数: 
        * $mongo_server:数组或字符串-array("127.0.0.1:1111", "127.0.0.1:2222")-"127.0.0.1:1111" 
        * $connect:初始化mongo对象时是否连接,默认连接 
        * $auto_balance:是否自动做负载均衡,默认是 
        * 
        * 返回值: 
        * 成功:mongo object 
        * 失败:false 
        */  
        function __construct($mongo_server, $connect=true, $auto_balance=true)  
        {  
            if (is_array($mongo_server))  
            {  
                $mongo_server_num = count($mongo_server);  
                if ($mongo_server_num > 1 && $auto_balance)  
                {  
                    $prior_server_num = rand(1, $mongo_server_num);  
                    $rand_keys = array_rand($mongo_server,$mongo_server_num);  
                    $mongo_server_str = $mongo_server[$prior_server_num-1];  
                    foreach ($rand_keys as $key)  
                    {  
                        if ($key != $prior_server_num - 1)  
                        {  
                            $mongo_server_str .= ',' . $mongo_server[$key];  
                        }  
                    }  
                }  
                else  
                {  
                    $mongo_server_str = implode(',', $mongo_server);  
                }                  }  
            else  
            {  
                $mongo_server_str = $mongo_server;  
            }  
            try {  
                $this->mongo = new Mongo($mongo_server, array('connect'=>$connect));  
            }  
            catch (MongoConnectionException $e)  
            {  
                $this->error = $e->getMessage();  
                return false;  
            }  
        }  
      
        function getInstance($mongo_server, $flag=array())  
        {  
            static $mongodb_arr;  
            if (emptyempty($flag['tag']))  
            {  
                $flag['tag'] = 'default';          }  
            if (isset($flag['force']) && $flag['force'] == true)  
            {  
                $mongo = new HMongodb($mongo_server);  
                if (emptyempty($mongodb_arr[$flag['tag']]))  
                {  
                    $mongodb_arr[$flag['tag']] = $mongo;  
                }  
                return $mongo;  
            }  
            else if (isset($mongodb_arr[$flag['tag']]) && is_resource($mongodb_arr[$flag['tag']]))  
            {  
                return $mongodb_arr[$flag['tag']];  
            }  
            else  
            {  
                $mongo = new HMongodb($mongo_server);  
                $mongodb_arr[$flag['tag']] = $mongo;  
                return $mongo;                  }          }  
      
        /** 
        * 连接mongodb server 
        * 
        * 参数:无 
        * 
        * 返回值: 
        * 成功:true 
        * 失败:false 
        */  
        function connect()  
        {  
            try {  
                $this->mongo->connect();  
                return true;  
            }  
            catch (MongoConnectionException $e)  
            {  
                $this->error = $e->getMessage();  
                return false;  
            }  
        }  
      
        /** 
        * select db 
        * 
        * 参数:$dbname 
        * 
        * 返回值:无 
        */  
        function selectDb($dbname)  
        {  
            $this->curr_db_name = $dbname;  
        }  
      
        /** 
        * 创建索引:如索引已存在,则返回。 
        * 
        * 参数: 
        * $table_name:表名 
        * $index:索引-array("id"=>1)-在id字段建立升序索引 
        * $index_param:其它条件-是否唯一索引等 
        * 
        * 返回值: 
        * 成功:true 
        * 失败:false 
        */  
        function ensureIndex($table_name, $index, $index_param=array())  
        {  
            $dbname = $this->curr_db_name;  
            $index_param['safe'] = 1;  
            try {  
                $this->mongo->$dbname->$table_name->ensureIndex($index, $index_param);  
                return true;  
            }  
            catch (MongoCursorException $e)  
            {  
                $this->error = $e->getMessage();  
                return false;  
            }  
        }  
      
        /** 
        * 插入记录 
        * 
        * 参数: 
        * $table_name:表名 
        * $record:记录 
        * 
        * 返回值: 
        * 成功:true 
        * 失败:false 
        */  
        function insert($table_name, $record)  
        {  
            $dbname = $this->curr_db_name;  
            try {  
                $this->mongo->$dbname->$table_name->insert($record, array('safe'=>true));  
                return true;  
            }  
            catch (MongoCursorException $e)  
            {  
                $this->error = $e->getMessage();  
                return false;  
            }  
        }  
      
        /** 
        * 查询表的记录数 
        * 
        * 参数: 
        * $table_name:表名 
        * 
        * 返回值:表的记录数 
        */  
        function count($table_name)  
        {  
            $dbname = $this->curr_db_name;  
            return $this->mongo->$dbname->$table_name->count();  
        }  
      
        /** 
        * 更新记录 
        * 
        * 参数: 
        * $table_name:表名 
        * $condition:更新条件 
        * $newdata:新的数据记录 
        * $options:更新选择-upsert/multiple 
        * 
        * 返回值: 
        * 成功:true 
        * 失败:false 
        */  
        function update($table_name, $condition, $newdata, $options=array())  
        {  
            $dbname = $this->curr_db_name;  
            $options['safe'] = 1;  
            if (!isset($options['multiple']))  
            {  
                $options['multiple'] = 0;          }  
            try {  
                $this->mongo->$dbname->$table_name->update($condition, $newdata, $options);  
                return true;  
            }  
            catch (MongoCursorException $e)  
            {  
                $this->error = $e->getMessage();  
                return false;  
            }          }  
      
        /** 
        * 删除记录 
        * 
        * 参数: 
        * $table_name:表名 
        * $condition:删除条件 
        * $options:删除选择-justOne 
        * 
        * 返回值: 
        * 成功:true 
        * 失败:false 
        */  
        function remove($table_name, $condition, $options=array())  
        {  
            $dbname = $this->curr_db_name;  
            $options['safe'] = 1;  
            try {  
                $this->mongo->$dbname->$table_name->remove($condition, $options);  
                return true;  
            }  
            catch (MongoCursorException $e)  
            {  
                $this->error = $e->getMessage();  
                return false;  
            }          }  
      
        /** 
        * 查找记录 
        * 
        * 参数: 
        * $table_name:表名 
        * $query_condition:字段查找条件 
        * $result_condition:查询结果限制条件-limit/sort等 
        * $fields:获取字段 
        * 
        * 返回值: 
        * 成功:记录集 
        * 失败:false 
        */  
        function find($table_name, $query_condition, $result_condition=array(), $fields=array())  
        {  
            $dbname = $this->curr_db_name;  
            $cursor = $this->mongo->$dbname->$table_name->find($query_condition, $fields);  
            if (!emptyempty($result_condition['start']))  
            {  
                $cursor->skip($result_condition['start']);  
            }  
            if (!emptyempty($result_condition['limit']))  
            {  
                $cursor->limit($result_condition['limit']);  
            }  
            if (!emptyempty($result_condition['sort']))  
            {  
                $cursor->sort($result_condition['sort']);  
            }  
            $result = array();  
            try {  
                while ($cursor->hasNext())  
                {  
                    $result[] = $cursor->getNext();  
                }  
            }  
            catch (MongoConnectionException $e)  
            {  
                $this->error = $e->getMessage();  
                return false;  
            }  
            catch (MongoCursorTimeoutException $e)  
            {  
                $this->error = $e->getMessage();  
                return false;  
            }  
            return $result;  
        }  
      
        /** 
        * 查找一条记录 
        * 
        * 参数: 
        * $table_name:表名 
        * $condition:查找条件 
        * $fields:获取字段 
        * 
        * 返回值: 
        * 成功:一条记录 
        * 失败:false 
        */  
        function findOne($table_name, $condition, $fields=array())  
        {  
            $dbname = $this->curr_db_name;  
            return $this->mongo->$dbname->$table_name->findOne($condition, $fields);  
        }  
      
        /** 
        * 获取当前错误信息 
        * 
        * 参数:无 
        * 
        * 返回值:当前错误信息 
        */  
        function getError()  
        {  
            return $this->error;  
        }  
    }  
      
    ?>

  • 相关阅读:
    Azure 虚拟机安全加固整理
    AzureARM 使用 powershell 扩容系统磁盘大小
    Azure Linux 云主机使用Root超级用户登录
    Open edX 配置 O365 SMTP
    powershell 根据错误GUID查寻错误详情
    azure 创建redhat镜像帮助
    Azure Powershell blob中指定的vhd创建虚拟机
    Azure Powershell 获取可用镜像 PublisherName,Offer,Skus,Version
    Power BI 连接到 Azure 账单,自动生成报表,可刷新
    Azure powershell 获取 vmSize 可用列表的命令
  • 原文地址:https://www.cnblogs.com/moqiang02/p/4061136.html
Copyright © 2011-2022 走看看