首页 > 开发 > PHP > 正文

php实现的mongodb操作类

2024-05-04 23:35:39
字体:
来源:转载
供稿:网友

说到php连mongoDB,不得不先介绍一下php的官方手册,网址在:http://us.php.net/manual/en/book.mongo.php,接下来给大家分享一个本人常用的MONGODB的操作类,详见的数据库操作都有了,小伙伴可以参考下。

mongo_db.php

 

 
  1. <?php 
  2.  
  3. /** 
  4. * Created by PhpStorm. 
  5. * User: yangyulong 
  6. * Date: 2015/5/26 
  7. * Time: 13:45 
  8. */ 
  9. class Mongo_db 
  10. private static $instanceof = NULL; 
  11. public $mongo
  12. private $host = 'localhost'
  13. private $port = '27017'
  14.  
  15. private $db
  16. public $dbname
  17. private $table = NULL; 
  18.  
  19. /** 
  20. * 初始化类,得到mongo的实例对象 
  21. */ 
  22. public function __construct($host = NULL, $port = NULL, $dbname = NULL, $table = NULL) 
  23.  
  24. if (NULL === $dbname) { 
  25. $this->throwError('集合不能为空!'); 
  26.  
  27. //判断是否传递了host和port 
  28. if (NULL !== $host) { 
  29. $this->host = $host
  30.  
  31. if (NULL !== $port) { 
  32. $this->port = $port
  33.  
  34. $this->table = $table
  35.  
  36. $this->mongo = new MongoClient($this->host . ':' . $this->port); 
  37. if ($this->getVersion() >= '0.9.0') { 
  38. $this->dbname = $this->mongo->selectDB($dbname); 
  39. $this->db = $this->dbname->selectCollection($table); 
  40. else { 
  41. $this->db = $this->mongo->$dbname->$table
  42.  
  43. public function getVersion() 
  44. return MongoClient::VERSION; 
  45.  
  46. /** 
  47. * 单例模式 
  48. * @return Mongo|null 
  49. */ 
  50. //public static function getInstance($host=null, $port=null, $dbname=null, $table=null){ 
  51. // 
  52. // if(!(self::$instanceof instanceof self)){ 
  53. // self::$instanceof = new self($host, $port, $dbname, $table); 
  54. // } 
  55. // 
  56. // return self::$instanceof; 
  57. //} 
  58.  
  59. /** 
  60. * 插入一条数据 
  61. * @param array $doc 
  62. */ 
  63. public function insert($doc = array()) 
  64. if (emptyempty($doc)) { 
  65. $this->throwError('插入的数据不能为空!'); 
  66. //保存数据信息 
  67. try { 
  68. if (!$this->db->insert($doc)) { 
  69. throw new MongoException('插入数据失败'); 
  70. } catch (MongoException $e) { 
  71. $this->throwError($e->getMessage()); 
  72.  
  73. /** 
  74. * 插入多条数据信息 
  75. * @param array $doc 
  76. */ 
  77. public function insertMulti($doc = array()) 
  78. if (emptyempty($doc)) { 
  79. $this->throwError('插入的数据不能为空!'); 
  80. //插入数据信息 
  81. foreach ($doc as $key => $val) { 
  82. //判断$val是不是数组 
  83. if (is_array($val)) { 
  84. $this->insert($val); 
  85.  
  86. /** 
  87. * 查找一条记录 
  88. * @return array|null 
  89. */ 
  90. public function findOne($where = NULL) 
  91. if (NULL === $where) { 
  92. try { 
  93. if ($result = $this->db->findOne()) { 
  94. return $result
  95. else { 
  96. throw new MongoException('查找数据失败'); 
  97. } catch (MongoException $e) { 
  98. $this->throwError($e->getMessage()); 
  99. else { 
  100. try { 
  101. if ($result = $this->db->findOne($where)) { 
  102. return $result
  103. else { 
  104. throw new MongoException('查找数据失败'); 
  105. } catch (MongoException $e) { 
  106. $this->throwError($e->getMessage()); 
  107.  
  108.  
  109. /** 
  110. * todo 带条件的随后做 
  111. * 查找所有的文档 
  112. * @return MongoCursor 
  113. */ 
  114. public function find($where = NULL) 
  115. if (NULL === $where) { 
  116.  
  117. try { 
  118. if ($result = $this->db->find()) { 
  119.  
  120. else { 
  121. throw new MongoException('查找数据失败'); 
  122. } catch (MongoException $e) { 
  123. $this->throwError($e->getMessage()); 
  124. else { 
  125. try { 
  126. if ($result = $this->db->find($where)) { 
  127.  
  128. else { 
  129. throw new MongoException('查找数据失败'); 
  130. } catch (MongoException $e) { 
  131. $this->throwError($e->getMessage()); 
  132.  
  133. $arr = array(); 
  134. foreach ($result as $id => $val) { 
  135. $arr[] = $val
  136.  
  137. return $arr
  138.  
  139. /** 
  140. * 获取记录条数 
  141. * @return int 
  142. */ 
  143. public function getCount() 
  144. try { 
  145. if ($count = $this->db->count()) { 
  146. return $count
  147. else { 
  148. throw new MongoException('查找总数失败'); 
  149. } catch (MongoException $e) { 
  150. $this->throwError($e->getMessage()); 
  151.  
  152. /** 
  153. * 获取所有的数据库 
  154. * @return array 
  155. */ 
  156. public function getDbs() 
  157. return $this->mongo->listDBs(); 
  158.  
  159. /** 
  160. * 删除数据库 
  161. * @param null $dbname 
  162. * @return mixed 
  163. */ 
  164. public function dropDb($dbname = NULL) 
  165. if (NULL !== $dbname) { 
  166. $retult = $this->mongo->dropDB($dbname); 
  167. if ($retult['ok']) { 
  168. return TRUE; 
  169. else { 
  170. return FALSE; 
  171. $this->throwError('请输入要删除的数据库名称'); 
  172.  
  173. /** 
  174. * 强制关闭数据库的链接 
  175. */ 
  176. public function closeDb() 
  177. $this->mongo->close(TRUE); 
  178.  
  179. /** 
  180. * 输出错误信息 
  181. * @param $errorInfo 错误内容 
  182. */ 
  183. public function throwError($errorInfo=''
  184. echo "<h3>出错了:$errorInfo</h3>"
  185. die(); 
  186.  

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表