1. 程式人生 > >php操作mongodb類和例項

php操作mongodb類和例項

近來學習了mongodb,剛好是做php開發的,隨便寫了php操作mongodb的封裝類.

<?php
/**
 * Created by PhpStorm.
 * User: lee
 * Date: 2016/10/24
 * Time: 13:49
 */
namespace App\Http\Controllers\Api;
use App\Http\Common\ReturnApi;
/*
 *
 *
 mongdb常規操作
 */
class MongdbCommonController{
private static $conn;
private static $mon;
private static 
$error; private function __construct(){ //self::$conn = new \MongoClient("mongodb://".env('MONGDB_USER').":".env('MONGDB_PASS')."@".env('MONGDB_HOST').":".env('MONGDB_PORT')."/".env('MONGDB_DB')); self::$conn = new \MongoClient("mongodb://".env('MONGDB_USER').":".env('MONGDB_PASS')."@".env('MONGDB_HOST').":"
.env('MONGDB_PORT')); //self::$conn = new \MongoClient("mongodb://".env('MONGDB_HOST').":".env('MONGDB_PORT')); $db = env('MONGDB_DB'); self::$mon = self::$conn->$db; } public static function getInstance(){ if(!(self::$conn instanceof self)){ self::$conn = new self(); } //return self::$conn->mydb; return
self::$conn; } private function __clone(){ trigger_error('Clone is not allowed'); }//禁止克隆 //建立索引 public function ensureIndex($table, $index, $index_param=array()) { $index_param['safe'] = 1; try { self::$mon->$table->ensureIndex($index, $index_param); return true; } catch (MongoCursorException$e) { self::$error = $e->getMessage(); return false; } } //新增 public function insert($table,$arr){ try { self::$mon->$table->insert($arr, array('w'=>true)); return true; } catch (MongoCursorException$e) { self::$error = $e->getMessage(); return false; } } //更新 public function update($table, $condition, $new_arr, $options=array()) { $options['w'] = 1; if (!isset($options['multiple'])) { $options['multiple'] = 0; } try { self::$mon->$table->update($condition, $new_arr, $options); return true; } catch (MongoCursorException$e) { self::$error = $e->getMessage(); return false; } } //刪除 public function remove($table, $condition, $options=array()) { $options['w'] = 1; try { self::$mon->$table->remove($condition, $options); return true; } catch (MongoCursorException$e) { self::$error = $e->getMessage(); return false; } } //查詢 public function find($table, $query_condition, $result_condition=array(), $fields=array()) { $cursor = self::$mon->$table->find($query_condition, $fields); if (!empty($result_condition['start'])) { $cursor->skip($result_condition['start']); } if (!empty($result_condition['limit'])) { $cursor->limit($result_condition['limit']); } if (!empty($result_condition['sort'])) { $cursor->sort($result_condition['sort']); } $result = array(); try { while ($cursor->hasNext()) { $result[] = $cursor->getNext(); } } catch (MongoCursorTimeoutException$e) { self::$error = $e->getMessage(); return false; } return $result; } //查詢一條記錄 public function findOne($table, $condition, $fields=array()) { return self::$mon->$table->findOne($condition, $fields); } //返回表的記錄數 public function count($table) { return self::$mon->$table->count(); } //返回錯誤資訊 public function getError() { return self::$error; } }

操作例項:

use App\Http\Controllers\Api\MongdbCommonController;
$db = MongdbCommonController::getInstance();
$collection = 'tab';
$data = array('tt'  =>'sdsd',
'pp'    =>  'ssdsdf');
返回記錄數
  echo $db->count($collection);
 //插入記錄
  $db->insert($collection, array("id"=>2, "title"=>"asdqw"));
 //更新
  $db->update($collection, array("id"=>2),array('tt'=>'dfdfd',"gg"=>"bbb",'hh'=>'dfsdsd'));
 //查詢記錄
echo '<pre>';
print_r( $db->find($collection, array("tt"=>'dfdfd'), array("start"=>1,"limit"=>4)));
//刪除
 $db->remove($collection, array('tt'  =>'sdsd'));