이번에는 PHP+mongoDB데이터베이스 운영에 대한 자세한 설명과 PHP+mongoDB 데이터베이스의 주의사항에 대해 소개하겠습니다.
최근 프로젝트 개발에 사용하는 데이터베이스는 mongodb 데이터베이스입니다. 저희 회사에서는 방금 mongodb 데이터베이스를 사용했기 때문에 이전에 사용할 수 있는 캡슐화된 mongodb 데이터베이스 작업 클래스가 없어서 프로젝트에서 mongodb를 특별히 공유했습니다. 여기서는 만족스럽지 못한 부분을 비판하지 않으셨으면 좋겠습니다.
우리 모두 알고 있듯이 mongodb는 NoSQL 데이터베이스의 대표적인 대표자로, 최근 몇 년 동안 특히 인기가 높았습니다. MongoDB에 대해 간단히 소개하겠습니다. .
MongoDB는 관계형 데이터베이스와 비관계형 데이터베이스 사이의 제품으로, 비관계형 데이터베이스 중에서 가장 기능이 풍부하고 관계형 데이터베이스와 가장 유사합니다. 지원하는 데이터 구조는 매우 느슨하고 json과 유사한 bjson 형식이므로 더 복잡한 데이터 유형을 저장할 수 있습니다. Mongo의 가장 큰 특징은 지원하는 쿼리 언어가 매우 강력하다는 것입니다. 구문은 객체 지향 쿼리 언어와 다소 유사하며 관계형 데이터베이스의 단일 테이블 쿼리와 유사한 대부분의 기능을 구현할 수 있습니다. 데이터 인덱싱.
고성능, 손쉬운 배포, 손쉬운 사용, 데이터 저장이 매우 편리한 것이 특징입니다. 주요 기능 특징은 다음과 같습니다. 컬렉션 저장을 지향하며 객체 유형 데이터를 쉽게 저장할 수 있습니다. 무료 모드.
동적 쿼리를 지원합니다.
내부 개체를 포함한 전체 인덱싱을 지원합니다.
지원문의.
복제 및 오류 복구를 지원합니다.
대형 개체(비디오 등)를 포함한 효율적인 바이너리 데이터 저장소를 사용하세요.
조각화를 자동으로 처리하여 클라우드 컴퓨팅 수준 확장성을 지원합니다.
RUBY, PYTHON, JAVA, C++, PHP 및 기타 언어를 지원합니다.
파일 저장 형식은 BSON(JSON의 확장)
네트워크를 통해 접근 가능
<?php /** * PHP操作mongodb数据库操作类 */ class Database { protected $database = ''; protected $mo; /** * 构造方法 */ public function construct() { $server = DBSERVER; $user = DBUSER; $password = DBPASS; $port = DBPORT; $database = DBNAME; $mongo = $this->getInstance($server, $user, $password, $port); $this->database = $mongo->$database; } /** * 数据库单例方法 * @param $server * @param $user * @param $password * @param $port * @return Mongo */ public function getInstance($server, $user, $password, $port) { if (isset($this->mo)) { return $this->mo; } else { if (!empty($server)) { if (!empty($port)) { if (!empty($user) && !empty($password)) { $this->mo = new Mongo("mongodb://{$user}:{$password}@{$server}:{$port}"); } else { $this->mo = new Mongo("mongodb://{$server}:{$port}"); } } else { $this->mo = new Mongo("mongodb://{$server}"); } } else { $this->mo = new Mongo(); } return $this->mo; } } /** * 查询表中所有数据 * @param $table * @param array $where * @param array $sort * @param string $limit * @param string $skip * @return array|int */ public function getAll($table, $where = array(), $sort = array(), $limit = '', $skip = '') { if (!empty($where)) { $data = $this->database->$table->find($where); } else { $data = $this->database->$table->find(); } if (!empty($sort)) { $data = $data->sort($sort); } if (!empty($limit)) { $data = $data->limit($limit); } if (!empty($skip)) { $data = $data->skip($skip); } $newData = array(); while ($data->hasNext()) { $newData[] = $data->getNext(); } if (count($newData) == 0) { return 0; } return $newData; } /** * 查询指定一条数据 * @param $table * @param array $where * @return int */ public function getOne($table, $where = array()) { if (!empty($where)) { $data = $this->database->$table->findOne($where); } else { $data = $this->database->$table->findOne(); } return $data; } /** * 统计个数 * @param $table * @param array $where * @return mixed */ public function getCount($table, $where = array()) { if (!empty($where)) { $data = $this->database->$table->find($where)->count(); } else { $data = $this->database->$table->find()->count(); } return $data; } /** * 直接执行mongo命令 * @param $sql * @return array */ public function toExcute($sql) { $result = $this->database->execute($sql); return $result; } /** * 分组统计个数 * @param $table * @param $where * @param $field */ public function groupCount($table, $where, $field) { $cond = array( array( '$match' => $where, ), array( '$group' => array( '_id' => '$' . $field, 'count' => array('$sum' => 1), ), ), array( '$sort' => array("count" => -1), ), ); $this->database->$table->aggregate($cond); } /** * 删除数据 * @param $table * @param $where * @return array|bool */ public function toDelete($table, $where) { $re = $this->database->$table->remove($where); return $re; } /** * 插入数据 * @param $table * @param $data * @return array|bool */ public function toInsert($table, $data) { $re = $this->database->$table->insert($data); return $re; } /** * 更新数据 * @param $table * @param $where * @param $data * @return bool */ public function toUpdate($table, $where, $data) { $re = $this->database->$table->update($where, array('$set' => $data)); return $re; } /** * 获取唯一数据 * @param $table * @param $key * @return array */ public function distinctData($table, $key, $query = array()) { if (!empty($query)) { $where = array('distinct' => $table, 'key' => $key, 'query' => $query); } else { $where = array('distinct' => $table, 'key' => $key); } $data = $this->database->command($where); return $data['values']; } } ?>
php WeChat 공개 계정은 현금 빨간 봉투 기능을 무작위로 배포합니다.
PHP 로드 밸런싱 하에서 세션 공유 사례에 대한 자세한 설명(코드 포함)
위 내용은 PHP+mongoDB 데이터베이스 작업 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!