说到php连mongoDB,不得不先介绍一下php的官方手册,网址在:http://us.php.net/manual/en/book.mongo.php,接下来给大家分享一个本人常用的MONGODB的操作类,详见的数据库操作都有了,小伙伴可以参考下。
mongo_db.php
- <?php
- /**
- * Created by PhpStorm.
- * User: yangyulong
- * Date: 2015/5/26
- * Time: 13:45
- */
- class Mongo_db
- {
- private static $instanceof = NULL;
- public $mongo;
- private $host = 'localhost';
- private $port = '27017';
- private $db;
- public $dbname;
- private $table = NULL;
- /**
- * 初始化类,得到mongo的实例对象
- */
- public function __construct($host = NULL, $port = NULL, $dbname = NULL, $table = NULL)
- {
- if (NULL === $dbname) {
- $this->throwError('集合不能为空!');
- }
- //判断是否传递了host和port
- if (NULL !== $host) {
- $this->host = $host;
- }
- if (NULL !== $port) {
- $this->port = $port;
- }
- $this->table = $table;
- $this->mongo = new MongoClient($this->host . ':' . $this->port);
- if ($this->getVersion() >= '0.9.0') {
- $this->dbname = $this->mongo->selectDB($dbname);
- $this->db = $this->dbname->selectCollection($table);
- } else {
- $this->db = $this->mongo->$dbname->$table;
- }
- }
- public function getVersion()
- {
- return MongoClient::VERSION;
- }
- /**
- * 单例模式
- * @return Mongo|null
- */
- //public static function getInstance($host=null, $port=null, $dbname=null, $table=null){
- //
- // if(!(self::$instanceof instanceof self)){
- // self::$instanceof = new self($host, $port, $dbname, $table);
- // }
- //
- // return self::$instanceof;
- //}
- /**
- * 插入一条数据
- * @param array $doc
- */
- public function insert($doc = array())
- {
- if (emptyempty($doc)) {
- $this->throwError('插入的数据不能为空!');
- }
- //保存数据信息
- try {
- if (!$this->db->insert($doc)) {
- throw new MongoException('插入数据失败');
- }
- } catch (MongoException $e) {
- $this->throwError($e->getMessage());
- }
- }
- /**
- * 插入多条数据信息
- * @param array $doc
- */
- public function insertMulti($doc = array())
- {
- if (emptyempty($doc)) {
- $this->throwError('插入的数据不能为空!');
- }
- //插入数据信息
- foreach ($doc as $key => $val) {
- //判断$val是不是数组
- if (is_array($val)) {
- $this->insert($val);
- }
- }
- }
- /**
- * 查找一条记录
- * @return array|null
- */
- public function findOne($where = NULL)
- {
- if (NULL === $where) {
- try {
- if ($result = $this->db->findOne()) {
- return $result;
- } else {
- throw new MongoException('查找数据失败');
- }
- } catch (MongoException $e) {
- $this->throwError($e->getMessage());
- }
- } else {
- try {
- if ($result = $this->db->findOne($where)) {
- return $result;
- } else {
- throw new MongoException('查找数据失败');
- }
- } catch (MongoException $e) {
- $this->throwError($e->getMessage());
- }
- }
- }
- /**
- * todo 带条件的随后做
- * 查找所有的文档
- * @return MongoCursor
- */
- public function find($where = NULL)
- {
- if (NULL === $where) {
- try {
- if ($result = $this->db->find()) {
- } else {
- throw new MongoException('查找数据失败');
- }
- } catch (MongoException $e) {
- $this->throwError($e->getMessage());
- }
- } else {
- try {
- if ($result = $this->db->find($where)) {
- } else {
- throw new MongoException('查找数据失败');
- }
- } catch (MongoException $e) {
- $this->throwError($e->getMessage());
- }
- }
- $arr = array();
- foreach ($result as $id => $val) {
- $arr[] = $val;
- }
- return $arr;
- }
- /**
- * 获取记录条数
- * @return int
- */
- public function getCount()
- {
- try {
- if ($count = $this->db->count()) {
- return $count;
- } else {
- throw new MongoException('查找总数失败');
- }
- } catch (MongoException $e) {
- $this->throwError($e->getMessage());
- }
- }
- /**
- * 获取所有的数据库
- * @return array
- */
- public function getDbs()
- {
- return $this->mongo->listDBs();
- }
- /**
- * 删除数据库
- * @param null $dbname
- * @return mixed
- */
- public function dropDb($dbname = NULL)
- {
- if (NULL !== $dbname) {
- $retult = $this->mongo->dropDB($dbname);
- if ($retult['ok']) {
- return TRUE;
- } else {
- return FALSE;
- }
- }
- $this->throwError('请输入要删除的数据库名称');
- }
- /**
- * 强制关闭数据库的链接
- */
- public function closeDb()
- {
- $this->mongo->close(TRUE);
- }
- /**
- * 输出错误信息
- * @param $errorInfo 错误内容
- */
- public function throwError($errorInfo='')
- {
- echo "<h3>出错了:$errorInfo</h3>";
- die();
- }
- }
以上所述就是本文的全部内容了,希望大家能够喜欢。
新闻热点
疑难解答