php操作mongodb类和实例

近来学习了mongodb,刚好是做php开发的,随便写了php操作mongodb的封装类.

/**
 * 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 '
';
 print_r( $db->find($collection, array("tt"=>'dfdfd'), array("start"=>1,"limit"=>4)));
 //删除
 $db->remove($collection, array('tt'  =>'sdsd'));


 
  


你可能感兴趣的:(php开发,php,mongodb,实例,class)