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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.