php实现的mongodb操作类


Posted in PHP onMay 28, 2015

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 (empty($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 (empty($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();
  }
 
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
优化php效率,提高php性能的一些方法
Mar 24 PHP
php提示undefined index的几种解决方法
May 21 PHP
php语言流程控制中的主动与被动
Nov 05 PHP
php中的比较运算符详解
Oct 28 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
深入理解PHP中的global
Aug 19 PHP
php自动获取关键字的方法
Jan 06 PHP
php封装的连接Mysql类及用法分析
Dec 10 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
PHP实现的策略模式示例
Mar 20 PHP
在 PHP 和 Laravel 中使用 Traits的方法
Nov 13 PHP
PHP编译安装时常见错误解决办法
May 28 #PHP
PHP安装memcached扩展笔记
May 28 #PHP
PHP实现的增强性mhash函数
May 27 #PHP
PHP验证信用卡卡号是否正确函数
May 27 #PHP
PHP的伪随机数与真随机数详解
May 27 #PHP
php实现window平台的checkdnsrr函数
May 27 #PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 #PHP
You might like
一步一步学习PHP(8) php 数组
2010/03/05 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
JQuery实现简单验证码提示解决方案
2012/12/20 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
一张图带我们入门Python基础教程
2017/02/05 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
农村党支部先进事迹
2014/01/14 职场文书
机电专业大学生职业规划书范文
2014/02/25 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
师德标兵事迹材料
2014/12/19 职场文书
西安兵马俑导游词
2015/02/02 职场文书
2015小学师德工作总结
2015/07/21 职场文书
初中体育教学随笔
2015/08/15 职场文书
体育委员竞选稿
2015/11/21 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android