php mongod操作类,php实现的mongodb操作类

本文介绍了如何使用PHP通过MongoDB进行数据库操作,包括单例模式的应用、数据插入、查询、计数和数据库管理,适合PHP开发者学习MongoDB的基础用法。

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();

}

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值