> 백엔드 개발 > PHP 튜토리얼 > 몇 가지 간단한 예가 포함된 mongodb PHP 작업 클래스

몇 가지 간단한 예가 포함된 mongodb PHP 작업 클래스

WBOY
풀어 주다: 2016-07-29 08:51:21
원래의
896명이 탐색했습니다.

class NewMongodb {    
    private $mongo;    //NewMongodb连接
    private $curr_db_name;
    private $curr_table_name;
    private $error;
    public $config;
    public function getInstance($mongo_server, $flag=array())
    {
        static $NewMongodb_arr;
        if (empty($flag['tag']))
        {
            $flag['tag'] = 'default';          }
        if (isset($flag['force']) && $flag['force'] == true)
        {
            $mongo = new NewMongodb($mongo_server);
            if ( 비어 있음($NewMongodb_arr[$flag['tag']]))
            {
                $NewMongodb_arr[$flag['tag']] = $mongo;
            }
            return $mongo;
        }
        else if (isset($NewMongodb_arr[$flag['tag']]) && is_resource($NewMongodb_arr[$flag['tag']]))
        {
            return $NewMongodb_arr[$ 플래그 [ 'tag']];
}
else { $ mongo = new NewMongoDB ($ mongo_server); $ newMongodb_arr [ 'tag'] = $ mongo ;
            return $mongo;
        }
    }
    /**
* 생성자
* 여러 mongo_server 전달 지원(1. 문제가 있는 경우 다른 서버에 연결 2. 쿼리를 여러 서버에 자동으로 균등하게 배포)
*
* 매개변수:
* $mongo_server: 배열 또는 문자열 -array("127.0.0.1:1111", "127.0.0.1:2222")-"127.0.0.1:1111"
* $connect: mongo 객체 초기화 시 연결 여부, 기본값 Connection
* $auto_balance: 로드밸런싱 자동 수행 여부, 기본값은
*
* 반환값:
* 성공: mongo 객체
* 실패: false
*/
    공개 함수 __construct($mongo_server, $c $auto_balance=true)
    {
     if (is_array($mongo_server))
     {
      $mongo_server_num = count($mongo_server);
      if ($mongo_server_num > 1 && $auto_balance)
      {
       $prior_server_ 숫자 = 랜드 (1, $mongo_server_num);
       $rand_keys = array_rand($mongo_server,$mongo_server_num);
       $mongo_server_str = $mongo_server[$prior_server_num-1];
       foreach($rand_keys를 $key로)
       {
        if ($key != $prior_server_num - 1)
        {
         $mongo_server_str .= ',' . 정의 }                  }
      else
      {
       $mongo_server_str = $mongo_server;
      }
      시도 {
       $this->mongo = new MongoClient($mongo_server, array('connect'=>$connect ));
      }
      catch (MongoConnectionException $e)
      {
       $this->error = $e->getMessage();
       return false;
      }
    }
    
    /**
* NewMongodb 서버에 연결
*
* 매개 변수: 없음
*
* 반환 값:
* 성공: true
* 실패: false
*/
    공개 함수 connect()
    {
        시도 {
            $this->mongo->connect();
            true를 반환합니다.
        }
catch(MongoConnectionException $e)
{
$this->error = $e->getMessage();
return false;
}
}
/ **
* db 선택
*
* 매개변수: $dbname
*
* 반환값: 없음
*/
공용 함수 selectDb($dbname)
{
$this->curr_db_name = $dbname;
}
/**
* 인덱스 생성 : 인덱스가 이미 존재하는 경우 반환합니다.
*
* 매개변수:
* $table_name: 테이블 이름
* $index: index-array("id"=>1)-id 필드에 오름차순 인덱스 생성
* $ index_param : 기타 조건 - 고유 인덱스인지 등
*
* 반환 값 :
* 성공 : true
* 실패 : false
*/
public function verifyIndex($table_name, $ index, $index_param=array())
{
$dbname = $this->curr_db_name;
$index_param['safe'] = 1;
try {
$this- & gt; mongo-& gt; $ dbname- & gt; entSureIndex ($ Index, $ Index_param)
{
          $this- >error = $e->getMessage();
                  return false; table_name, $record)
{
$dbname = $this->curr_db_name;
시도 {
$ this->mongo->$dbname->$table_name->insert ($record, array('safe'=>true));
                return true; dbname = $this->curr_db_name;
                                                                                      ~                                    . */
공개 함수 업데이트($table_name, $condition, $newdata, $opti> {
$dbname = $this->curr_db_name;
$options['safe'] = 1;
                                                                                       | , $options);
                              true를 반환합니다.             $this ->오류 = $e->getMessage();
            false를 반환합니다.   
    /**
* 레코드 삭제
*
* 매개 변수:
* $table_name: 테이블 이름
* $condition: 조건 삭제
* $options: 선택 항목 삭제
*
* 반환 값:
* 성공: true
* 실패: false
*/
    공개 함수 제거($table_name, $condition, $opti>    {
        $dbname = $this->curr_db_name;
        $options['safe' ] = 1;
        시도 {
            $this->mongo->$dbname->$table_name->remove($condition, $options);
            return true;
        }
        catch (MongoCursorException $e)
        {
            $this->error = $e->getMessage();
            return false;
    }   }    
    / **
* 레코드 검색
*
* 매개 변수:
* $table_name: 테이블 이름
* $query_condition: 필드 검색 조건
* $result_condition: 쿼리 결과 제한 조건-limit/ sort Wait
* $fields: 필드 가져오기
*
* 반환 값:
* 성공: 레코드 세트
* 실패: false
*/
    공개 함수 find($table_name, $query_condition, $result_c $fields=array())
    {
        $dbname = $this->curr_db_name;
        $cursor = $ this->mongo->$dbname->$table_name->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();
        시도 {
            while ($cursor->hasNext())
            {
               $결과[] = 정의 🎜>            false 반환;
        }
        catch (MongoCursorTimeoutException $e)
        {
            $this->error = $e->getMessage();
           false를 반환합니다.
}
        return $result;
    }    
    /**
* 레코드 검색
*
* 매개변수:
* $table_name: 테이블 이름
* $condition: 검색 조건
* $fields: 필드 가져오기
*
* 반환값:
* 성공: 레코드 1개
* 실패: false
*/
    공개 함수 findOne($table_name, $condition, $fields=array())
    {
$dbname = $this->curr_db_name;
        return $this->mongo->$dbname->$table_name->findOne($condition, $fields);
    }    
    / **
* 현재 오류 메시지 가져오기
*
* 매개변수: 없음
*
* 반환 값: 현재 오류 메시지
*/
    공개 함수 getError()
    {
        return $this->error;
    }
/*** NewMongodb 클래스** 예:
* $mongo = new NewMongodb("127.0.0.1:11223");
* $mongo->selectDb("test_db");
* 인덱스 생성
* $mongo->ensureIndex("test_table", array("id"=>1), array('unique'=>true));
* 테이블의 레코드 가져오기
* $mongo ->count("test_table");
* 레코드 삽입
* $mongo->insert("test_table", array("id"=>2, "title"=>" asdqw" ));
* 레코드 업데이트
* $mongo->update("test_table", array("id"=>1),array("id"=>1,"title" => ;"bbb"));
* 레코드 업데이트 - 레코드가 있으면 업데이트하고 없으면 추가합니다. set
* $mongo->update("test_table", array("id)와 동일합니다. "=>1 ),array("id"=>1,"title"=>"bbb"),array("upsert"=>1));
* 검색 기록
* $mongo-> find("c", array("title"=>"asdqw"), array("start"=>2,"limit"=>2,"sort"=>array( "id"=> ;1)))
* 레코드 찾기
* $mongo->findOne("$mongo->findOne("ttt", array("id"=>1) )", array( "id"=>1));
* 기록 삭제
* $mongo->remove("ttt", array("title"=>"bbb"));
* 레코드 삭제만
* $mongo->remove("ttt", array("title"=>"bbb"), array("justOne"=>1));
* Mongo 작업 오류 메시지 가져오기
* $mongo->getError();
*/
}

위 내용은 관련 내용을 포함하여 몇 가지 간단한 예제와 함께 mongodb PHP 작업 클래스를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿