PHP怎样操作MongoDB?

分类:MongoDB,PHP | 作者:凹凸曼 | 发表于2011/03/30 PHP怎样操作MongoDB?已关闭评论

前端时间在开发MongoDB+PHP 的项目中!

定义的是模型基类 方便用于操作表的!

这哈添加了两个方法 setTable  及setPrimary,

方便晒出来,用于案例哈!

<?php
    /*  author:凹凸曼
    /*  email: jar-c@163.com  
    /*  模型基类
    */
class Model{
    protected $db=null;
    protected $name='';
    protected $primary='';
   
    public function __construct($db){
        $this->db=$db;
    }
    /**
    * 添加数据
    *
    * @param array $data
    * @return boolean
    */
    public function add(array $data){
        $col=$this->getCollection();
        return $col->insert($data);
    }
    /**
    * 删除数据
    *
    * @param array $query
    * @return boolean
    */
    public function del(array $query){
        $col=$this->getCollection();
        return $col->remove($query);
    }
    /**
    * 更新数据
    *
    * @param array $query 查询的内容
    * @param array $set   需更新的数据
    *
    */
    public function update($query=array(),$set=array()){
        $col=$this->getCollection();
        return $col->update($query,$set);
    }
    /**
    * 获取数据集合
    *
    * @param array $query
    * @param array $fields
    * @return array
    */
    public function getAll($query=array(),$fields=array()){
        $col=$this->getCollection();
        $cursor=$col->find($query,$fields);
        while($cursor->hasNext()){
            $r[]=$cursor->getNext();
        }
        return $r;
    }
    public function setTable($name){
        $this->name=$name;
    }
    public function setPrimary($name){
        $this->primary=$name;
    }
    /**
    * 获取一条记录
    *
    * @param array $query
    * @param array $fields
    * @return array
    */
    public function getOne($query=array(),$fields=array()){
        $col=$this->getCollection();
        $r=$col->findOne($query,$fields);
 
        return $r;
    }
    /**
    * 设置数据表对象
    *
    * @return obj
    */
    protected function getCollection(){
        $db=$this->db;
        $name=$this->name;
        return $db->$name;       
    }
    /**
    * 搜索函数
    *
    * @param int $skip
    * @param int $limit
    * @param array $sort
    * @param array $query
    * @param array $fields
    * @return array
    */
    public function search($skip=0,$limit=0,$sort=array(),$query=array(),$fields=array()){
        $col=$this->getCollection();
        $cursor=$col->find($query,$fields)->sort($sort)->skip($skip)->limit($limit);
        while($cursor->hasNext()){
            $r[]=$cursor->getNext();
        }
        return $r;
    }
   
    public function totalNum($query=array(),$fields=array()){
        $col=$this->getCollection();
        return $col->find($query,$fields)->count();
    }
    /**
    * 获取唯一键的最大值
    * @return string or int
    */
    public function getLastPri(){
        $arr=$this->search(0,1,array($this->primary=>-1),array(),array($this->primary));
           
        return $arr[0][$this->primary];
    }
  
}   
 /**测试区域**/
$dbuser      =        'lyc';            //数据库用户名
$dbpwd       =        '123456';        //数据库密码
$dbip        =        'localhost';    //数据库ip地址
$dbport      =        '27017';        //数据库开发端口
$dbs         =        'nihao';        //数据库名
$table       =         'apoyl_class';    //表名
$primary     =         'cid';         //唯一键
$mongo=new Mongo($dbip.':'.$dbport);
$db=$mongo->$dbs;
$aut=$db->authenticate($dbuser,$dbpwd);
if(empty($aut['ok'])){
    echo 'connect failure!';
    exit;
} 
$m=new Model($db);
$m->setTable($table);
$m->setPrimary($primary);
//$arr=$m->getAll();
@header('Content-type:text/html;charset=utf-8');
$arr=$m->getOne(array('cid'=>'1'));
print_r($arr);  
?>

本文出自 “凹凸曼” 博客,请务必保留此出处 http://www.apoyl.com/?p=414

日志信息 »

该日志于2011-03-30 09:01由 凹凸曼 发表在MongoDB, PHP分类下, 评论已关闭。

目前盖楼

抱歉,评论被关闭

« »