抱歉,评论被关闭
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
目前盖楼