머리말
PHP+MongoDB를 사용하는 사용자가 많은 이유는 MongoDB가 비정형 데이터를 저장하는 데 매우 편리하기 때문입니다. PHP5 이전에는 Mongo와 MongoDB라는 두 가지 공식 확장이 제공되었는데, Mongo는 MongoClient와 같은 여러 핵심 클래스를 기반으로 하는 카테고리에서 작동하므로 기본적으로 Mongo 확장을 선택합니다.
자세한 내용은 공식 매뉴얼을 참조하세요: https://www.php.net/manual/zh/book.mongo.php
그러나 PHP5에서 PHP7로 업그레이드됨에 따라 공식 매뉴얼은 더 이상 Mongo 확장을 지원하지 않습니다. , MongoDB, PHP7만 지원합니다. 성능 향상이 엄청나고 사람들이 이를 놓칠 수 없기 때문에 Mongo를 MongoDB로 대체하는 방법은 해결해야 할 시급한 문제가 되었습니다. MongoDB는 네임스페이스를 도입했지만 기능적 캡슐화는 매우 열악합니다. 기본 확장을 사용해야 한다면 이는 거의 기본 Mongo 문을 작성하는 것을 의미합니다. 이 아이디어는 DB IO 작업으로 인해 발생하는 구문 문제를 단순화하고 논리 최적화에 초점을 맞춘 ORM의 아이디어와 반대됩니다.
자세한 내용은 공식 매뉴얼도 참고해주세요: https://www.php.net/manual/zh/set.mongodb.php
이런 상황에서 MongoDB 관계자는 어쩔 수 없었습니다. 사용을 촉진하고 시장 점유율을 높이며 MongoDB 확장을 기반으로 한 라이브러리를 출시했습니다: https://github.com/mongodb/mongo-php-library
이 라이브러리에 대한 자세한 문서는 https://docs.mongodb를 참조하세요. .com/php-library/current /reference/
MongoDB 드라이버
원래 드라이버를 사용하는 경우 일반적인 구문은 다음과 같습니다.
<?php use MongoDB\Driver\Manager; use MongoDB\Driver\BulkWrite; use MongoDB\Driver\WriteConcern; use MongoDB\Driver\Query; use MongoDB\Driver\Command; class MongoDb { protected $mongodb; protected $database; protected $collection; protected $bulk; protected $writeConcern; protected $defaultConfig = [ 'hostname' => 'localhost', 'port' => '27017', 'username' => '', 'password' => '', 'database' => 'test' ]; public function __construct($config) { $config = array_merge($this->defaultConfig, $config); $mongoServer = "mongodb://"; if ($config['username']) { $mongoServer .= $config['username'] . ':' . $config['password'] . '@'; } $mongoServer .= $config['hostname']; if ($config['port']) { $mongoServer .= ':' . $config['port']; } $mongoServer .= '/' . $config['database']; $this->mongodb = new Manager($mongoServer); $this->database = $config['database']; $this->collection = $config['collection']; $this->bulk = new BulkWrite(); $this->writeConcern = new WriteConcern(WriteConcern::MAJORITY, 100); } public function query($where = [], $option = []) { $query = new Query($where, $option); $result = $this->mongodb->executeQuery("$this->database.$this->collection", $query); return json_encode($result); } public function count($where = []) { $command = new Command(['count' => $this->collection, 'query' => $where]); $result = $this->mongodb->executeCommand($this->database, $command); $res = $result->toArray(); $count = 0; if ($res) { $count = $res[0]->n; } return $count; } public function update($where = [], $update = [], $upsert = false) { $this->bulk->update($where, ['$set' => $update], ['multi' => true, 'upsert' => $upsert]); $result = $this->mongodb->executeBulkWrite("$this->database.$this->collection", $this->bulk, $this->writeConcern); return $result->getModifiedCount(); } public function insert($data = []) { $this->bulk->insert($data); $result = $this->mongodb->executeBulkWrite("$this->database.$this->collection", $this->bulk, $this->writeConcern); return $result->getInsertedCount(); } public function delete($where = [], $limit = 1) { $this->bulk->delete($where, ['limit' => $limit]); $result = $this->mongodb->executeBulkWrite("$this->database.$this->collection", $this->bulk, $this->writeConcern); return $result->getDeletedCount(); } }
이 구문은 이전 구문과 너무 달라 불편합니다. 변경하려면 PHP MongoDB 라이브러리
MongoDB 라이브러리
1.
Original
new MongoClient();
New
new MongoDB\Client();
2.Add
Original
$collention->insert($array, $options);에 연결하세요.
New
$resultOne = $collention->insertOne($array, $options);//单 $lastId = $resultOne->getInsertedId(); $resultMany = $collention->insertMany($array, $options);//多 $count = $resultMany->getInsertedCount();
3 .Modify
Original
$collention->update($condition, [ '$set' => $values ,[ 'multiple' => true//多条,单条false ]);
New
$collection->updateOne( ['state' => 'ny'], ['$set' => ['country' => 'us']] ); $updateResult = $collection->updateMany( ['state' => 'ny'], ['$set' => ['country' => 'us']] ); $count = $updateResult->getModifiedCount();
4. E$cursor = $collection->find($condition, [
'name' => true//指定字段
]);
$cursor->skip(5);
$cursor->limit(5);
$cursor->sort([
'time' => -1
]);
신규
$cursor = $collection->find($condition, [ 'skip' => 5, 'limit' => 5, 'sort' => [ 'time' => -1 ],//排序 'projection' => [ 'name' => 1//指定字段 ] ]);삭제
Rha
$collention->remove($condition, [ 'justOne' => false//删单条 ]); $collention->remove([]);//删所有신규
$result = $collention->deleteOne($condition, $options); $collention->deleteMany($condition, $options); $result->getDeletedCount();
보충
일부 사람들은 다음을 사용하여 데이터를 처리하는 데 익숙해질 수 있습니다. MySQL과 같은 자체 증분 ID() 쿼리 및 수정 방법:$collention->findAndModify([ '_id' => $tableName//我在自增表中用其它的表名作主键 ], [ '$inc' => ['id' => 1]//自增 ], [ '_id' => 0 ], [ 'new' => 1//返回修改后的结果,默认是修改前的 ]);이제 MongoDB 라이브러리를 사용하는 경우 다음과 같이 수정해야 합니다.
$collention->findOneAndUpdate([ '_id' => $tableName ], [ '$inc' => ['id' => 1] ], [ 'projection' => ['id' => 1], 'returnDocument' => MongoDB\Operation\FindOneAndUpdate::RETURN_DOCUMENT_AFTER ]);마찬가지로 findOneAndDelete() findOneAndReplace()가 있습니다. 자세한 내용은
문서
에서 확인하세요
위 내용은 MongoDB를 작동하기 위한 PHP7 업그레이드 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.
