class mongoInit { private $mongo; //mongo对象 private $db; //db mongodb对象数据库 private $collection; //集合,相当于数据表 /** * 初始化Mongo * $config = array( * 'server' => ‘127.0.0.1' 服务器地址 * ‘port’ => '27017' 端口地址 * ‘option’ => array('connect' => true) 参数 * 'db_name'=> 'test' 数据库名称 * ‘username’=> 'root' 数据库用户名 * ‘password’=> '123456' 数据库密码 * ) * Enter description here ... * @param unknown_type $config */ public function connect($config = array()) { if($config['server'] == ''){ $config['server'] = '127.0.0.1'; } if($config['port'] == ''){ $config['port'] = '27017'; } $options = array(); if(!$config['option']){ $options['connect'] = true; }else{ $matches = array(); preg_match_all("/(\w+):(\w+);/", $config['option'], $matches,PREG_SET_ORDER); foreach ($matches as $value){ $options[$value[1]] = $value[2]; } } $server = 'mongodb://' . $config['server'] . ':' . $config['port']; $this->mongo = new Mongo($server, $options); if ($config['db_name'] == '') $config['db_name'] = 'test'; $this->db = $this->mongo->selectDB($config['db_name']); if ($config['username'] != '' && $config['password'] != '') $this->db->authenticate($config['username'], $config['password']); } /** * 选择一个集合,相当于选择一个数据表 * @param string $collection 集合名称 */ public function selectCollection($collection) { return $this->collection = $this->db->selectCollection($collection); } /** * 新增数据 * @param array $data 需要新增的数据 例如:array('title' => '1000', 'username' => 'xcxx') * @param array $option 参数 */ public function insert($data, $option = array()) { return $this->collection->insert($data, $option); } /** * 批量新增数据 * @param array $data 需要新增的数据 例如:array(0=>array('title' => '1000', 'username' => 'xcxx')) * @param array $option 参数 */ public function batchInsert($data, $option = array()) { return $this->collection->batchInsert($data, $option); } /** * 保存数据,如果已经存在在库中,则更新,不存在,则新增 * @param array $data 需要新增的数据 例如:array(0=>array('title' => '1000', 'username' => 'xcxx')) * @param array $option 参数 */ public function save($data, $option = array()) { return $this->collection->save($data, $option); } /** * 根据条件移除 * @param array $query 条件 例如:array(('title' => '1000')) * @param array $option 参数 */ public function remove($query, $option = array()) { return $this->collection->remove($query, $option); } /** * 根据条件更新数据 * @param array $query 条件 例如:array(('title' => '1000')) * @param array $data 需要更新的数据 例如:array(0=>array('title' => '1000', 'username' => 'xcxx')) * @param array $option 参数 */ public function update($query, $data, $option = array()) { return $this->collection->update($query, $data, $option); } /** * 根据条件查找一条数据 * @param array $query 条件 例如:array(('title' => '1000')) * @param array $fields 参数 */ public function findOne($query, $fields = array()) { return $this->collection->findOne($query, $fields); } /** * 根据条件查找多条数据 * @param array $query 查询条件 * @param array $sort 排序条件 array('age' => -1, 'username' => 1) * @param int $limit 页面 * @param int $limit 查询到的数据条数 * @param array $fields返回的字段 */ public function find($query, $sort = array(), $skip = 0, $limit = 0, $fields = array()) { $cursor = $this->collection->find($query, $fields); if ($sort) $cursor->sort($sort); if ($skip) $cursor->skip($skip); if ($limit) $cursor->limit($limit); $result = array(); while ($cursor->hasNext()){ $result[] = $cursor->getNext(); } return $result; } /** * 数据统计 */ public function toatalCount() { return $this->collection->count(); } /** * 错误信息 */ public function error() { return $this->db->lastError(); } /** * 获取集合对象 */ public function getCollection() { return $this->collection; } /** * 获取DB对象 */ public function getDb() { return $this->db; } }
php工具类之【mongo数据库操作类】
猜你喜欢
转载自student-lp.iteye.com/blog/2104033
今日推荐
周排行