PHP怎样操作MongoDB?

分类:MongoDB,PHP | 作者:凹凸曼 | 发表于2011/03/30

前端时间在开发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分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

目前盖楼 (0)层:

发表评论 »

« »