php操作MongoDB类

下载dll

https://pecl.php.net/package/mongo/1.6.13/windows



1、安装服务端,即命令行。 上一篇

2、安装PHP扩展

     php.ini,加入:extension=php_mongo.dll,重启Web服务器

  两处:1、 D:\wamp\bin\php\php5.5.12

            2、

3、下载MongoDB类

4、开启服务,即命令行

5、操作


=====================================

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  
//连接localhost:27017 
//phpinfo();
include("./mongo_db.php");
echo "begin"."<br>";
$dbname = 'test';
$table = 'person';
$conn = new mongo_db($host = NULL, $port = NULL, $dbname, $table); 
var_dump($conn->find());
echo "<br>";
echo "end";






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值