加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php实现的mongodb操作类

发布时间:2020-12-12 20:54:15 所属栏目:PHP教程 来源:网络整理
导读:mongo_db.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; pri

mongo_db.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 "

    出错了:$errorInfo

    ";
    die();
    }

}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读