-
- /*
- * 이 템플릿을 변경하려면 도구 | 템플릿
- * 편집기에서 템플릿을 엽니다.
- */
-
-
- class mongo_db {
-
- private $config;
- 비공개 $connection;
- 비공개 $db;
- 비공개 $connection_string;
- 비공개 $host;
- 비공개 $port;
- 개인 $user;
- 비공개 $pass;
- 비공개 $dbname;
- 비공개 $persist;
- 비공개 $persist_key;
- 비공개 $selects = array();
- 비공개 $wheres = array();
- 비공개 $sorts = array();
- 비공개 $limit = 999999;
- 비공개 $offset = 0;
- 비공개 $timeout = 200;
- 개인 $key = 0;
- /*** ------------------------------------------------- ------------------ * 생성자 * --- ------------------------------------- -------------- * * Mongo PECL 확장이 설치/활성화되었는지 자동으로 확인합니다. * 연결 문자열을 생성하고 MongoDB에 대한 연결을 설정합니다.*/
-
- 공개 함수 __construct() {
- if((IS_NOSQL != 1)){
- return;
- }
- if (!class_exists('Mongo')) {
- //$this->error("MongoDB PECL 확장이 설치되지 않았거나 활성화되지 않았습니다.", 500);
- }
- $configs =wxcity_base::load_config("캐시","mongo_db");
- $num = count($configs['connect']);
- $this->timeout = Trim($configs['timeout']);
- $keys = wxcity_base::load_config('double');
- $this->key = $keys['mongo_db'];
- $this->config = $configs['connect'][$this->key];
- $status = $this->connect();
- if($status == false)
- {
- for($i = 1; $i < $num; $i )
- {
- $n = $this-> 키 $i;
- $key = $n >= $num ? $n - $번호 : $n;
- $this->config = $configs['connect'][$key];
- $status = $this->connect();
- if($status!=false)
- {
- $keys['mongo_db'] = $key ;
- $this->key = $key;
- $data = "";
- file_put_contents(WHTY_PATH.'configs/double.php', $data, LOCK_EX);
- 휴식;
- }
- }
- }
- if($status==false)
- {
- die('mongoDB가 연결되지 않음');
- }
- }
-
- function __destruct() {
- if((IS_NOSQL != 1)){
- return;
- }
- if($this->connection)
- {
- $this->connection->close();
- }
- }
-
- /*** ------------------------------------------------- ------------------ * MONGODB에 연결 * -------------- ------------------------------------- ---------------- * * * Connection_string() 메소드에서 생성된 연결 문자열을 사용하여 MongoDB에 대한 연결을 설정합니다. * 구성 파일에서 'mongo_persist_key'가 true로 설정된 경우 영구 연결을 설정합니다. 즉시 연결을 설정하려고 하기 때문에 'persist' * 옵션만 설정하도록 허용합니다.*/
- private function connect() {
- $this->connection_string();
- $options = array('connect'=>true,'timeout'=>$this->timeout);
- try {
- $this->connection = new Mongo($this->connection_string, $options);
- $this->db = $this->connection->{$this->dbname};
- return($this);
- } catch(MongoConnectionException $e) {
- return false;
- }
-
- }
- /*** ------------------------------------------------- ------------------ * 연결 문자열 빌드 * -------------- ------------------------------------- ---------------- * * 구성 파일에서 연결 문자열을 작성합니다.*/
- private function Connection_string() {
- $this->host = Trim($this->config['hostname']);
- $this->port = Trim($this->config['port']);
- $this->user = Trim($this->config['username']);
- $this->pass = Trim($this->config['password']);
- $this->dbname = Trim($this->config['database']);
- $this->persist = Trim($this->config['autoconnect']);
- $this->persist_key = Trim($this->config['mongo_persist_key']);
-
- $connection_string = "mongodb://";
- if (emptyempty($this->host)) {
- $this->error("MongoDB에 연결하려면 호스트를 설정해야 합니다.", 500);
- } if (emptyempty($this->dbname)) {
- $this->error("MongoDB에 연결하려면 데이터베이스를 설정해야 합니다.", 500);
- } if (!emptyempty($this->user) && !emptyempty($this->pass)) {
- $connection_string .= "{$this->user}:{$this- >통과}@";
- } if (isset($this->port) && !emptyempty($this->port)) {
- $connection_string .= "{$this->host}:{$this-> ;포트}";
- } else {
- $connection_string .= "{$this->host}";
- } $this->connection_string = 트림($connection_string);
- }
-
- /*** ------------------------------------------------- ------------------ * Switch_db * --- ------------------------------------- -------------- * * 기본 데이터베이스에서 다른 데이터베이스로 전환*/
- public function switch_db($database = '') {
- if (emptyempty($database)) {
- $this- >error("MongoDB 데이터베이스를 전환하려면 새 데이터베이스 이름을 지정해야 합니다.", 500);
- } $this->dbname = $database;
- try {
- $this->db = $this->connection->{$this->dbname};
- 반환(TRUE);
- } catch (Exception $e) {
- $this->error("Mongo 데이터베이스를 전환할 수 없습니다: {$e->getMessage()}", 500);
- }
- }
-
- /*** ------------------------------------------------- ------------------ * 필드 선택 * --------------- ------------------------------------- --------------- * * 쿼리 프로세스 중에 포함할 필드 또는 제외할 필드를 결정합니다. * 현재는 포함과 제외를 동시에 수행할 수 없으므로 * $includes 배열이 $excludes 배열보다 우선합니다. * 제외할 필드만 선택하려면 $includes에 빈 배열()을 남겨 두십시오. * * @usage: $this->mongo_db->select(array('foo', 'bar'))->get('foobar');*/
- 공용 함수 select($includes = array(), $excludes = array()) {
- if (! is_array($includes)) {
- $includes = 배열();
- }
- if (!is_array($excludes)) {
- $excludes = array();
- }
- if (!emptyempty($includes)) {
- foreach ($includes as $col) {
- $this->selects[$col] = 1;
- }
- } else {
- foreach ($excludes as $col) {
- $this->selects[$col] = 0;
- }
- } return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수의 위치 * --------------- ------------------------------------- --------------- * * 이러한 검색 매개변수를 기반으로 문서를 가져옵니다. $wheres 배열은 필드를 키로, 값을 검색 기준으로 * 연관 배열이어야 합니다. * * @usage = $this->mongo_db->where(array('foo' => 'bar'))->get('foobar');*/
- 공용 함수 where($wheres = array()) {
- foreach ((array)$wheres as $wh => $ val) {
- $this->wheres[$wh] = $val;
- } return($this);
- }
-
- /*** ------------------------------------------------- ------------------------------- * WHERE_IN 參數 * --------------- -------------------------------------------------- --------------- * * 取得給定$in array() 中$field 的值所在的文件。 * * @usage = $this->mongo_db->where_in('foo', array('bar', 'zoo', 'blah'))->get('foobar');*/
- public function where_in($field = "", $in = array()) {
- $this->where_init($field);
- $this->wheres[$field]['$in'] = $in;
- 返回($this);
- }
-
- /*** ------------------------------------------------- ------------------------------- * WHERE_NOT_IN 參數 * --------------- --- ----------------------------------------------- --- --------------- * * 取得$field 的值不在給定$in array() 中的文件。 * * @usage = $this->mongo_db->where_not_in('foo', array('bar', 'zoo', 'blah'))->get('foobar');*/
- public function where_not_in($field = "", $in = array()) {
- $this->where_init($現場);
- $this->wheres[$field]['$nin'] = $in;
- 回傳($this); }
-
- /*** ------------------------------------------------- ------------------------------- * 大於參數 * ------------- -- ------------------------------------------------ -- --------------- * * 取得$field的值大於$x的文檔* * @usage = $this->mongo_db->where_gt( '富', 20);* /
- public function where_gt($field = "", $x) {
- $this->where_init($field);
- $this->wheres[$field]['$gt'] = $x;
- 回傳($this)
- }
-
- /*** ------------------------------------------------- ------------------------------- * 大於或等於參數 * ---------- --- ----------------------------------------------- --- ----------------- * * 取得$field的值大於等於$x的文件* * @usage = $this-> mongo_db->where_gte('foo', 20) ;*/
- public function where_gte($field = "", $x) {
- $this-> where_init($field);
- $this->wheres[$field]['$gte'] = $x;
- 回傳($this)
- }
-
- /*** ------------------------------------------------- ------------------------------- * 小於參數的地方 * ------------- -------------------------------------------------- ----------------- * * 取得$field的值小於$x的文檔* * @usage = $this->mongo_db->where_lt( '富', 20);*/
- public function where_lt($field = "", $x) {
- $this->where_init($field);
- $this->wheres[$field ]['$lt '] = $x;
- 回傳($this) }
-
- /*** ------------------------------------------------- ------------------------------- * 小於或等於參數 * ---------- --- ----------------------------------------------- --- ----------------- * * 取得$field的值小於或等於$x的文檔* * @usage = $this-> mongo_db->where_lte('foo', 20 );*/
- public function where_lte($field = "" , $x) {
- $ this->where_init($field)
- $this->wheres[$field]['$lte'] = $x;
- 回傳($this); 🎜> }
-
- /* ** ------------------------------------------------- ------------------------------- * 參數之間的位置* ------------ -- ------------------------------------------------ -- ---------------- * * 取得$field的值在$x和$y之間的文件* * @usage = $this->mongo_db->where_ Between ( 'foo', 20, 30);*/
- public function where_ Between($field = "", $x, $y) {
- $this->where_init($field ) ;
- $this->wheres[$ field]['$gte'] = $x;
- $this->wheres[$field]['$lte'] = $y;
- 回傳( $這個);
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수 사이 및 매개변수와 같지 않음 * ---------- ------------------------------------- ------- * * $field의 값이 $x와 $y 사이이지만 같지 않은 문서를 가져옵니다. * * @usage = $this ->mongo_db->where_between_ne('foo', 20, 30);*/
- 공개 함수 where_between_ne($field = "", $x, $y) {
- $this->where_init($field);
- $this->wheres[$field]['$gt'] = $x;
- $this->wheres[$field]['$lt'] = $y;
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수와 같지 않은 경우 * ------------ ------------------------------------- ------------------ * * $field의 값이 $x와 같지 않은 문서를 가져옵니다. * * @usage = $this->mongo_db-> where_between('foo', 20, 30);*/
- 공개 함수 where_ne($field = "", $x) {
- $this->where_init($field);
- $this->wheres[$field]['$ne'] = $x;
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 어디서 또는 * --------------- ------------------------------------- --------------- * * $field의 값이 하나 이상의 값에 있는 문서 가져오기 * * @usage = $this->mongo_db->where_or(' foo', array( 'foo', 'bar', 'blegh' );*/
- 공개 함수 where_or($field = "", $values) {
- $this->where_init($field);
- $this->wheres[$field]['$or'] = $values;
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 어디서 그리고 * --------------- ------------------------------------- --------------- * * 요소가 지정된 값과 일치하는 문서 가져오기 * * @usage = $this->mongo_db->where_and( array ( 'foo' => ; 1, 'b' => '일부 예' );*/
- 공개 함수 where_and($elements_values = array()) {
- foreach ((array)$elements_values as $element => $ val) {
- $this->wheres[$element] = $val;
- } return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * MOD는 어디에 * --------------- ------------------------------------- --------------- * * $field % $mod = $result * * @usage = $this->mongo_db->where_mod( 'foo', 10 있는 문서 가져오기 , 1 );*/
- 공개 함수 where_mod($field, $num, $result) {
- $this->where_init($field);
- $this->wheres[$field]['$mod'] = array($num, $result);
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 사이즈는 * --------------- ------------------------------------- --------------- * * 필드 크기가 지정된 $size int인 문서 가져오기 * * @usage : $this->mongo_db->where_size(' foo', 1)->get('foobar');*/
- 공개 함수 where_size($field = "", $size = "") {
- $this->_where_init($field );
- $this->wheres[$field]['$size'] = $size;
- 반환($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수와 유사함 * --------------- ------------------------------------- --------------- * * $field의 (문자열) 값이 값과 유사한 문서를 가져옵니다. 기본값은 * 대소문자를 구분하지 않는 검색을 허용합니다. * * @param $flags * 일반적인 정규식 플래그를 허용합니다. * i = 대소문자를 구분하지 않음 * m = 여러 줄 * x = 주석 포함 가능 * l = 로케일 * s = dotall, "." 줄 바꿈을 포함하여 모든 항목과 일치 * u = 유니코드 일치 * * @param $enable_start_wildcard * TRUE 이외의 값으로 설정되면 시작 줄 문자 "^"가 검색 값 앞에 * 추가됩니다. 이는 시작 시 값만 검색한다는 의미입니다. * 새로운 줄. * * @param $enable_end_wildcard * TRUE 이외의 값으로 설정하면 줄 끝 문자 "$"가 검색 값에 추가됩니다. 이는 줄 끝의 값만 검색한다는 것을 의미합니다. * * @usage = $this->mongo_db->like('foo', 'bar', 'im', FALSE, TRUE);*/
- 공개 함수 like($field = "", $value = "", $flags = "i", $enable_start_wildcard = TRUE, $enable_end_wildcard = TRUE) {
- $field = (문자열) Trim($field);
- $this->where_init($field);
- $value = (문자열) Trim($value);
- $value = quotemeta($value);
- if ($enable_start_wildcard !== TRUE) {
- $value = "^" . $값;
- } if ($enable_end_wildcard !== TRUE) {
- $value .= "$";
- } $regex = "/$value/$flags";
- $this->wheres[$field] = new MongoRegex($regex);
- return($this);
- }
-
- 공개 함수 wheres($where){
- $this->wheres = $where;
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수별 순서 * -------------- ------------------------------------- ---------------- * * 전달된 매개변수를 기준으로 문서를 정렬합니다. 값을 내림차순으로 설정하려면 * -1, FALSE, 'desc' 또는 'DESC' 값을 전달해야 합니다. 그렇지 않으면 * 1(ASC)로 설정됩니다. * * @usage = $this->mongo_db->where_between('foo', 20, 30);*/
- 공개 함수 order_by($fields = array()) {
- if (!is_array($fields) || !count($ 필드)) return ;
- foreach ($fields as $col => $val) {
- if ($val == -1 || $val === FALSE || strtolower($val) == 'desc') {
- $this->sorts[$col] = -1;
- } else {
- $this->sorts[$col] = 1;
- }
- } return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 제한된 문서 * --------------- ------------------------------------- --------------- * * 결과 집합을 문서 수 $x로 제한 * * @usage = $this->mongo_db->limit($x);*/
- 공개 함수 제한($x = 99999) {
- if ($x !== NULL && is_numeric($x) && $ x >= 1) {
- $this->limit = (int) $x;
- } return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 오프셋 문서 * --------------- ------------------------------------- --------------- * * $x개의 문서를 건너뛰도록 결과 집합을 오프셋합니다. * * @usage = $this->mongo_db->offset($x);*/
- 공개 함수 오프셋($x = 0) {
- if ($x !== NULL && is_numeric($x) && $ x >= 1) {
- $this->offset = (int) $x;
- } return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * GET_WHERE * --- ------------------------------------- -------------- * * 전달된 매개변수를 기반으로 문서 가져오기 * * @usage = $this->mongo_db->get_where('foo', array('bar' = > '뭔가'));*/
- 공개 함수 get_where($collection = "", $where = array(), $limit = 99999, $orderby=array()) {
- if (is_array($orderby) || !emptyempty($orderby)) {
- $order_by = $this->order_by($order_by);
- }
- return($this->where($where)->limit($limit)->get($collection));
- }
- 공개 함수 selectA($collection = "", $limit = 99999, $orderby=array()) {
- if(intval($limit)<1){
- $limit = 999999;
- }
- $order_by = $this->order_by($orderby);
- $re = $this->limit($limit)->get($collection);
- $this->clear();
- return (배열)$re;
- }
-
- 공개 함수 listinfo($collection = "", $orderby=array(), $page=1, $pagesize=12) {
- $page = max(intval($page) ), 1);
- $offset = $pagesize * ($page - 1);
- $pagesizes = $offset $pagesize;
- $this->offset($offset);
- $order_by = $this->order_by($orderby);
- $re = $this->limit($pagesize)->get($collection);
- $this->limit(999999);
- $count = $this->count($collection);
- $this->pages = 페이지($count, $page, $pagesize);
- return (배열)$re;
- }
-
- /*** ------------------------------------------------- ------------------------------- * 얻다 * ---------------- ------------------------------------- -------------- * * 전달된 매개변수를 기반으로 문서 가져오기 * * @usage = $this->mongo_db->get('foo', array('bar' = > '뭔가'));*/
- 공개 함수 get($collection = "") {
- if (emptyempty($collection)) {
- $this- >error("MongoDB에서 문서를 검색하려면 컬렉션 이름을 전달해야 합니다.", 500);
- } $결과 = 배열();
- $documents = $this->db->{$collection}->find($this->wheres, $this->selects)->limit((int) $this-> ;limit)->skip((int) $this->offset)->sort($this->sorts);
- $returns = 배열();
- foreach($documents를 $doc로): $returns[] = $doc;
- endforeach;
- 반환($returns);
- }
-
- public function getMy($collection = "") {
- if (emptyempty($collection)) {
- $this->error("다음에서 문서를 검색하려면 MongoDB, 컬렉션 이름을 전달해야 합니다.", 500);
- } $결과 = 배열();
- $documents = $this->db->{$collection}->find($this->wheres, $this->selects)->limit((int) $this-> ;limit)->skip((int) $this->offset)->sort($this->sorts);
- $returns = 배열();
- foreach($documents를 $doc로): $returns[] = $doc;
- endforeach;
- $이것 -> 분명한();
- 반환($returns);
- }
-
- /*** ------------------------------------------------- ------------------------------- * 세다 * ---------------- ------------------------------------- -------------- * * 전달된 매개변수를 기반으로 문서 개수 * * @usage = $this->mongo_db->get('foo');*/
- 공개 함수 개수($collection = "") {
- if (emptyempty($collection)) {
- $this- >error("MongoDB에서 문서 개수를 검색하려면 컬렉션 이름을 전달해야 합니다.", 500);
- } $count = $this->db->{$collection}->find($this->wheres)->limit((int) $this->limit)-> Skip((int) $this->offset)->count();
- $this->clear();
- 반환($count);
- }
-
- /*** ------------------------------------------------- ------------------ * 삽입 * --- ------------------------------------- -------------- * * 전달된 컬렉션에 새 문서 삽입 * * @usage = $this->mongo_db->insert('foo', $data = array() );*/
- 공개 함수 insert($collection = "", $data = array(), $name='ID') {
- if (emptyempty($collection)) {
- $this->error("삽입할 Mongo 컬렉션을 선택하지 않았습니다.", 500);
- } if (count($data) == 0 || !is_array($data)) {
- $this->error("Mongo 컬렉션에 삽입할 항목이 없거나 삽입할 항목이 배열이 아닙니다.", 500 );
- } try {
- /**
- wxcity_base::load_sys_class('whtysqs','',0);
- $mongoseq_class = new whtysqs('creaseidsqs');
- $re = $mongoseq_class->query("?name=" . $collection . "&opt=put&data=1");
- **/
- $re = put_sqs('list_mongo_creaseidsqs','1');
- if(is_numeric($re)){
- $re ;
- $data[$name] = intval($re);
- }else{
- $data[$name] = intval(time());
- //die('mongosqs 오류');
- }
- $this->db->{$collection}->insert($data, array('fsync' => TRUE));
- $this->clear();
- $data[$name] 반환;
- } catch (MongoCursorException $e) {
- $this->error("MongoDB에 데이터 삽입 실패: {$e->getMessage()}", 500);
- }
- }
-
- 공개 함수 insertWithId($collection = "", $data = array()) {
- if (emptyempty($collection)) {
- $this- >error("삽입할 Mongo 컬렉션을 선택하지 않았습니다.", 500);
- } if (count($data) == 0 || !is_array($data)) {
- $this->error("Mongo 컬렉션에 삽입할 항목이 없거나 삽입할 항목이 배열이 아닙니다.", 500 );
- } try {
- $this->db->{$collection}->insert($data, array('fsync' => TRUE));
- $this->clear();
- 1을 반환합니다.
- } catch (MongoCursorException $e) {
- $this->error("MongoDB에 데이터 삽입 실패: {$e->getMessage()}", 500);
- }
- }
- /*** ------------------------------------------------- ------------------------------- * 업데이트 * ---------------- ------------------------------------- -------------- * * 전달된 컬렉션으로 문서 업데이트 * * @usage = $this->mongo_db->update('foo', $data = array()) ;*/
- 공개 함수 업데이트($collection = "", $data = array()) {
- if (emptyempty($collection) ) {
- $this->error("업데이트할 Mongo 컬렉션을 선택하지 않았습니다.", 500);
- } if (count($data) == 0 || !is_array($data)) {
- $this->error("Mongo 컬렉션에서 업데이트할 항목이 없거나 업데이트할 항목이 배열이 아닙니다.", 500 );
- } try {
- $this->db->{$collection}->update($this->wheres, array('$set' => $data), array(' fsync' => TRUE, '다중' => FALSE);
- $this->clear();
- 반환(TRUE);
- } catch (MongoCursorException $e) {
- $this->error("MongoDB로의 데이터 업데이트 실패: {$e->getMessage()}", 500);
- }
- }
-
- /*** ------------------------------------------------- ------------------ * UPDATE_ALL * --- ------------------------------------- -------------- * * 전달된 컬렉션에 새 문서 삽입 * * @usage = $this->mongo_db->update_all('foo', $data = array() );*/
- public function update_all($collection = "", $data = array()) {
- if (emptyempty( $collection)) {
- $this->error("업데이트할 Mongo 컬렉션을 선택하지 않았습니다.", 500);
- } if (count($data) == 0 || !is_array($data)) {
- $this->error("Mongo 컬렉션에서 업데이트할 항목이 없거나 업데이트할 항목이 배열이 아닙니다.", 500 );
- } try {
- $this->db->{$collection}->update($this->wheres, array('$set' => $data), array(' fsync' => TRUE, '다중' =>
- 반환(TRUE);
- } catch (MongoCursorException $e) {
- $this->error("MongoDB로의 데이터 업데이트 실패: {$e->getMessage()}", 500);
- }
- }
-
- /*** ------------------------------------------------- ------------------------------- * 삭제 * ---------------- ------------------------------------- -------------- * * 특정 기준에 따라 전달된 컬렉션에서 문서 삭제 * * @usage = $this->mongo_db->delete('foo', $data = array ());*/
- 공개 함수 delete($collection = "") {
- if (emptyempty($collection)) {
- $this->error("삭제할 Mongo 컬렉션을 선택하지 않았습니다.", 500);
- } try {
- $this->db->{$collection}->remove($this->wheres, array('fsync' => TRUE, 'justOne' => 진실));
- $this->clear();
- 반환(TRUE);
- } catch (MongoCursorException $e) {
- $this->error("MongoDB로의 데이터 삭제 실패: {$e->getMessage()}", 500);
- }
- }
-
- /*** ------------------------------------------------- ------------------ * DELETE_ALL * --- ------------------------------------- -------------- * * 특정 기준에 따라 전달된 컬렉션에서 모든 문서 삭제 * * @usage = $this->mongo_db->delete_all('foo', $data = 정렬());*/
- public function delete_all($collection = "") {
- if (emptyempty($collection)) {
- $this->error( "삭제할 Mongo 컬렉션이 선택되지 않았습니다.", 500);
- } try {
- $this->db->{$collection}->remove($this->wheres, array('fsync' => TRUE, 'justOne' => 거짓));
- 반환(TRUE);
- } catch (MongoCursorException $e) {
- $this->error("MongoDB로의 데이터 삭제 실패: {$e->getMessage()}", 500);
- }
- }
-
- /*** ------------------------------------------------- ------------------ * ADD_INDEX * --- ------------------------------------- -------------- * * 선택적 매개변수를 사용하여 컬렉션의 키 인덱스를 확인합니다. 값을 내림차순으로 설정하려면 * -1, FALSE, 'desc' 또는 'DESC' 값을 전달해야 합니다. 그렇지 않으면 * 1(ASC)로 설정됩니다. * * @usage = $this->mongo_db->add_index($collection, array('first_name' => 'ASC', 'last_name' => -1), array('unique' => TRUE )));*/
- 공개 함수 add_index($collection = "", $keys = array(), $options = array()) {
- if (emptyempty($collection)) {
- $this->error("인덱스를 추가할 Mongo 컬렉션이 지정되지 않았습니다.", 500);
- } if (emptyempty($keys) || !is_array($keys)) {
- $this->error("키가 지정되지 않았기 때문에 MongoDB 컬렉션에 인덱스를 생성할 수 없습니다.", 500);
- } foreach ($keys as $col => $val) {
- if ($val == -1 || $val === FALSE || strtolower($val) == 'desc') {
- $keys[$col] = -1;
- } else {
- $keys[$col] = 1;
- }
- } if ($this->db->{$collection}->ensureIndex($keys, $options) == TRUE) {
- $this->clear() ;
- return($this);
- } else {
- $this->error("MongoDB 컬렉션에 인덱스를 추가하려고 할 때 오류가 발생했습니다.", 500);
- }
- }
-
- /*** ------------------------------------------------- ------------------ * REMOVE_INDEX * --- ------------------------------------- -------------- * * 컬렉션에 있는 키의 인덱스를 제거합니다. 값을 내림차순으로 설정하려면 * -1, FALSE, 'desc' 또는 'DESC' 값을 전달해야 합니다. 그렇지 않으면 * 1(ASC)로 설정됩니다. * * @usage = $this->mongo_db->remove_index($collection, array('first_name' => 'ASC', 'last_name' => -1));*/
- 공개 함수 Remove_index($collection = "", $keys = array()) {
- if (emptyempty( $collection)) {
- $this->error("인덱스를 제거할 Mongo 컬렉션이 지정되지 않았습니다.", 500);
- } if (emptyempty($keys) || !is_array($keys)) {
- $this->error("지정된 키가 없기 때문에 MongoDB 컬렉션에서 인덱스를 제거할 수 없습니다.", 500);
- } if ($this->db->{$collection}->deleteIndex($keys, $options) == TRUE) {
- $this->clear();
- return($this);
- } else {
- $this->error("MongoDB 컬렉션에서 인덱스를 제거하려고 할 때 오류가 발생했습니다.", 500);
- }
- }
-
- /*** ------------------------------------------------- ------------------ * REMOVE_ALL_INDEXES * --- ------------------------------------- -------------- * * 컬렉션에서 모든 인덱스를 제거합니다. * * @usage = $this->mongo_db->remove_all_index($collection);*/
- 공개 함수 Remove_all_indexes($collection = "") {
- if (emptyempty($collection)) {
- $this->error("모든 인덱스를 제거하기 위해 지정된 Mongo 컬렉션이 없습니다.", 500);
- } $this->db->{$collection}->deleteIndexes();
- $this->clear();
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * LIST_INDEXES * --- ------------------------------------- -------------- * * 컬렉션의 모든 인덱스를 나열합니다. * * @usage = $this->mongo_db->list_indexes($collection);*/
- public function list_indexes($collection = "") {
- if (emptyempty($collection)) {
- $this->error( "모든 인덱스를 제거하도록 지정된 Mongo 컬렉션이 없습니다.", 500);
- } return($this->db->{$collection}->getIndexInfo());
- }
-
- /*** ------------------------------------------------- ------------------ * 드롭 컬렉션 * --------------- ------------------------------------- --------------- * * 데이터베이스에서 지정된 컬렉션을 제거합니다. * 제작 과정에서 매우 큰 문제가 발생할 수 있으므로 주의하세요!*/
- 공개 함수 drop_collection($collection = "") {
- if (emptyempty($collection)) {
- $this- >error("데이터베이스에서 삭제하도록 지정된 Mongo 컬렉션이 없습니다.", 500);
- } $this->db->{$collection}->drop();
- TRUE를 반환합니다.
- }
-
- /*** ------------------------------------------------- ------------------------------- * 분명한 * ---------------- ------------------------------------- -------------- * * 클래스 변수를 기본 설정으로 재설정합니다.*/
- 개인 함수clear() {
- $this->selects = array();
- $this->wheres = 배열();
- $this->limit = NULL;
- $this->offset = NULL;
- $this->sorts = 배열();
- }
-
- /*** ------------------------------------------------- ------------------ * 초기화 프로그램의 위치 * --------------- ------------------------------------- --------------- * * $wheres array()에 삽입할 매개변수를 준비합니다.*/
- 비공개 함수 where_init($param) {
- if (!isset($this->wheres[$param])) {
- $this->wheres[$param] = 배열();
- }
- }
-
- 공개 함수 오류($str, $t) {
- echo $str;
- 종료;
- }
-
- }
-
- ?>
-
复代码
使用范例
- $table_name=trim(strtolower($this->table_name));
- $this->mongo_db->where($where);
- $order=!emptyempty($order)?array('AID'=>'DESC'):array('AID'=>'ASC');//升序降序
- $infos=$ this->mongo_db->listinfo($table_name,$order,$page,$pagesize);
제제대码
|