-
- /*
- * 이 템플릿을 변경하려면 도구 | 템플릿
- * 편집기에서 템플릿을 엽니다.
- */
-
-
- 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['使用者名稱']);
- $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 = trim($connection_string); > /*** ------------------------------------------------- ------------------------------- * Switch_db * ---------------- -------------------------------------------------- -------------- * * 從預設資料庫切換到不同的資料庫*/
- public function switch_db($database = '') {
- if (emptyempty($database)) {
- $this- >error(" 切換MongoDB資料庫,必須指定新的資料庫名稱", 500) ;
- } $this->dbname = $database;
- 嘗試{
- $this->db = $this->connection->{$this->dbname };
- 回傳(真) ;
- } catch (Exception $e) {
- $this->error(" 無法切換Mongo 資料庫:{$e->getMessage()}", 500);
- }
- }
-
- /*** ------------------------------------------------- ------------------------------- * 選擇欄位* --------------- -------------------------------------------------- --------------- * * 決定在查詢過程中包含哪些欄位或排除哪些欄位。 * 目前,不能同時包含和排除,因此 * $includes 陣列將優先於 $excludes 陣列。 如果您只想選擇要排除的字段,請將 $includes 保留為空 array()。 * * @usage: $this->mongo_db->select(array('foo', 'bar'))->get('foobar');*/
- public function select($includes = array(), $excludes = array()) {
- if (! is_array($includes)) {
- $includes = array()
- }
- 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');*/
- public function where($wheres = array()) {
- foreach ((array)$wheres as $wh => $ val ) {
- $this->wheres[$wh] = $val;
- } return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * WHERE_IN 매개변수 * --------------- ------------------------------------- --------------- * * $field의 값이 주어진 $in array()에 있는 문서를 가져옵니다. * * @usage = $this->mongo_db->where_in('foo', array('bar', 'zoo', 'blah'))->get('foobar');*/
- 공용 함수 where_in($field = "", $in = array()) {
- $this->where_init($field);
- $this->wheres[$field]['$in'] = $in;
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * WHERE_NOT_IN 매개변수 * --------------- ------------------------------------- --------------- * * $field의 값이 주어진 $in array()에 없는 문서를 가져옵니다. * * @usage = $this->mongo_db->where_not_in('foo', array('bar', 'zoo', 'blah'))->get('foobar');*/
- 공개 함수 where_not_in($field = "", $in = array()) {
- $this->where_init($ 필드);
- $this->wheres[$field]['$nin'] = $in;
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수보다 큰 경우 * ------------- ------------------------------------- ----------------- * * $field의 값이 $x보다 큰 문서 가져오기 * * @usage = $this->mongo_db->where_gt( '푸', 20);*/
- 공개 함수 where_gt($field = "", $x) {
- $this->where_init($field);
- $this->wheres[$field]['$gt'] = $x;
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수보다 크거나 같은 경우 * ---------- ------------------------------------- ------- * * $field의 값이 $x보다 크거나 같은 문서를 가져옵니다. * * @usage = $this-> mongo_db->where_gte('foo', 20);*/
- 공개 함수 where_gte($field = "", $x) {
- $this->where_init($field);
- $this->wheres[$field]['$gte'] = $x;
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수보다 작은 경우 * ------------- ------------------------------------- ----------------- * * $field의 값이 $x보다 작은 문서 가져오기 * * @usage = $this->mongo_db->where_lt( '푸', 20);*/
- 공개 함수 where_lt($field = "", $x) {
- $this->where_init($field);
- $this->wheres[$field]['$lt'] = $x;
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수보다 작거나 같은 경우 * ---------- ------------------------------------- ------- * * $field의 값이 $x보다 작거나 같은 문서 가져오기 * * @usage = $this-> mongo_db->where_lte('foo', 20);*/
- 공개 함수 where_lte($field = "", $x) {
- $this->where_init($field);
- $this->wheres[$field]['$lte'] = $x;
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수 사이 * -------------- ------------------------------------- ---------------- * * $field의 값이 $x와 $y 사이에 있는 문서 가져오기 * * @usage = $this->mongo_db->where_between ('푸', 20, 30);*/
- 공개 함수 where_between($field = "", $x, $y) {
- $this->where_init($field );
- $this->wheres[$field]['$gte'] = $x;
- $this->wheres[$field]['$lte'] = $y;
- return($this);
- }
-
- /*** ------------------------------------------------- ------------------ * 매개변수 사이 및 매개변수와 같지 않음 * ---------- ------------------------------------- ------- * * $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 = 匹配unicode * * @param $enable_start_wildcard * 如果設定為TRUE 以外的任何內容,則在搜尋值前面新增起始行字元“^”,表示僅搜尋開頭處的值* 一新行。 * * @param $enable_end_wildcard * 如果設定為 TRUE 以外的任何值,則結束行字元「$」將附加到搜尋值,表示僅搜尋行末尾的值。 * * @usage = $this->mongo_db->like('foo', 'bar', 'im', FALSE, TRUE);*/
- 公用函數如($field = "", $value = "", $flags = "i", $enable_start_wildcard = TRUE, $enable_end_wildcard = TRUE) {
- $field = (string) 修剪($field);
- $this->where_init($field);
- $值 = (字串) 修剪($值);
- $value = quotemeta($value);
- if ($enable_start_wildcard !== TRUE) {
- $value = "^" . $值;
- } if ($enable_end_wildcard !== TRUE) {
- $value .= "$";
- } $regex = "/$value/$flags";
- $this->wheres[$field] = new MongoRegex($regex);
- 返回($this);
- }
-
- public function wheres($where){
- $this->wheres = $where;
- }
-
- /*** ------------------------------------------------- ------------------------------- * 依參數排序 * -------------- -------------------------------------------------- ---------------- * * 根據傳遞的參數對文件進行排序。若要將值設為降序,* 您必須傳遞 -1、FALSE、'desc' 或 'DESC' 值,否則它們將被 * 設定為 1 (ASC)。 * * @usage = $this->mongo_db->where_ Between('foo', 20, 30);*/
- public function order_by($fields = array()) {
- if (!is_array($fields) || !count($ ) ) 欄位))回傳;
- 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);*/
- 公用函數limit($x = 99999) {
- if ($x !== NULL && is_numeric ($x) && $ x >= 1) {
- $this->limit = (int) $x;
- } return($this); }
-
- /** * ------------------------------------------------- ------------------------------- * 抵銷文件 * --------------- -------------------------------------------------- --------------- * * 偏移結果集以跳過$x 個文件* * @usage = $this->mongo_db->offset($x);*/
- public function offset($x = 0) {
- if ($x !== NULL && is_numeric($x) && $ x >= 1) {
- $this-> offset = (int) $x;
- } return($this)
- }
-
- /*** ------------------------------------------------- ------------------------------------------- * 到達地點 * --- ------------- ------------------------------------- ------------- -------------- * * 根據傳入的參數取得文件* * @usage = $this->mongo_db->get_where( 'foo', array('bar' = >「某事」));*/
- public function 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));
- }
- public function selectA( $collection = "", $limit = 99999, $orderby=array()) {
- if(intval($limit) $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}->插入($data, array('fsync' => TRUE));
- $this->clear();
- 回傳$data[$name];
- } catch (MongoCursorException $e) {
- $this->error("將資料插入MongoDB 失敗:{$e->getMessage()}", 500);
- }
- }
-
- public function insertWithId($ collection = "", $data = array()) {
- if (emptyempty($collection)) {
- $this- >error("沒有選擇要插入的Mongo 集合", 500);
- } if (count($data) == 0 || !is_array($data)) {
- $this->error("Nothing to insert into Mongo collection or insert is not an array", 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()) ;*/
- public function update($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();
- 回傳(真);
- } 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 ());* /
- public function delete($collection = "") {
- if (emptyempty($collection)) {
- $this->error("沒有選擇要刪除的Mongo 集合", 500);
- } try {
- $this->db->{$collection}->remove($this->wheres, array('fsync' => TRUE, 'justOne' =>;真的));
- $this->clear();
- 回傳(真);
- } 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());
- }
-
- / *** ------------------------------------------------- ------------------------------- * 刪除收藏 * --------------- -------------------------------------------------- --------------- * * 從資料庫中刪除指定的集合。 請小心,因為這 * 在生產中可能會出現一些非常大的問題!*/
- public function drop_collection($collection = "") {
- if (emptyempty($collection)) {
- $this- >錯誤(「沒有指定從資料庫中刪除的Mongo 集合」, 500);
- } $this->db->{$collection}->drop();
- 回傳TRUE;
- }
-
- /*** ------------------------------------------------- - - - - - - - - - - - - - - - - * 清除* - - - - - - - - ----------------------- --------------------------- -------------- * * 將類別變數重設為默認設定 */
- private function clear() {
- $this->selects = array();
- $this->wheres = array();
- $this->limit = NULL;
- $this->offset = NULL;
- $this->sorts = array();
- }
-
- /*** ------------------------------------------------- ------------------------------- * 初始化器所在位置* ------------- -- ------------------------------------------------ -- --------------- * * 準備參數以插入$wheres array() 中。*/
- private function where_init($param) {
- if (!isset($this->wheres[$param])) {
- $this->wheres[$param] = array();
- }
- }
-
- 公用函數錯誤($str, $t) {
- echo $str;
- 退出;
- }
-
- }
-
- ? >
-
複製程式碼
使用範例
- $table_name=trim(strtolower($this->table_name));
- $this->mongo_db->where($where);
- $this->mongo_db->where($where);
- $order=!emptyempty($order)?array('AID'=>'DESC'):array('AID'=>'ASC');//升序降序
$infos=$ this->mongo_db ->listinfo($table_name,$order,$page,$pagesize);
複製程式碼
|