>  기사  >  백엔드 개발  >  PHP7에서 MongoDB 드라이버 사용 소개

PHP7에서 MongoDB 드라이버 사용 소개

不言
不言원래의
2018-07-05 14:29:224982검색

이 기사에서는 주로 PHP7의 MongoDB 드라이버 사용에 대해 소개합니다. 이제 이를 공유합니다.

php7은 MongoDB를 구동하는 데만 사용할 수 있습니다.

Mongodb 드라이버를 사용하여 데이터베이스에 연결

Mongodb 드라이버를 처음 사용할 때 거부했습니다. 공식 문서를 살펴보니 일련의 클래스와 이해할 수 없는 멤버 메서드만 보였습니다. 오랫동안 탐색한 결과 찾기, 업데이트, 삭제 등과 같은 키워드는 찾을 수 없었고 심지어 조금 더 복잡한 키워드도 찾을 수 없었습니다. 복제본 세트 및 사용자 인증과 같은 데이터베이스에 연결하는 방법은 알려져 있지 않습니다.
다행히 문서가 완전히 부족한 것은 아닙니다. MongodbDriverManger::constructor를 클릭하면 mongo://[host:port, host:port ,host:port]/[dbname]?[username=aa&password=bb&replicaSet=cc]

  • $uriOptions는 위의 ? 뒤에 있는 매개변수 문자열입니다. , 여기에 쓰시면 됩니다

  • $uri 形如 mongo://[host:port,host:port,host:port]/[dbname]?[username=aa&password=bb&replicaSet=cc]
  • $uriOptions 就是上面?后面的那一串参数,可以写在这里

  • $driverOptions 其他选项比如默认的读写参数

MongodbDriver CURD操作

这就是是我一开始觉得这个驱动反人类的地方,文档里没有任何的find,update,delete等字眼,只有一个Command类和一个Query类
Query 类稍微好一些,提供了部分查询选项。
实际上,对Mongo数据库的所有操作,都可以通过Command类进行。而php的驱动文档对具体的 commandOptions 是不做介绍的。
正因为我是mongodb萌新,所以才会觉得这个驱动无比奇葩反人类,根本就无从下手。
我们使用这个驱动的关键,是用Command类构造一个commandOption
而这个commandOption需要我们从mongodb的官方文档中去了解
MONGODB MANUAL - Database Commands
所有的操作,数据增删改查,聚合排序,数据库状态,用户认证等等,都可以通过这些命令搞定。下面随便举几个例子

  • 连接数据库

$this->_conn = new MongoDB\Driver\Manager('mongodb://localhost:27017/test');
$this->_db = 'test';
// execute command.
function exec($opts) {
    $cmd = new MongoDB\Driver\Command($opts);
    $res =  $this->_conn->executeCommand($this->_db, $cmd);
    return $res->toArray();
}
  • 条件查询,按需返回

$cmd = [
    'find' => 'table', // collection表名
    'filter' => ['_id' => ['$gte' => 10, '$lt' => 20]],
    'projection' => ['name' => 1, 'email' => 1]
];
$res = $this-exec($cmd);
  • 修改记录

$cmd = [
    'update' => 'table', // collection 表名
    'updates' => [
        ['q' => [_id => ['$lt' => 10]], 'u' => ['status' => 0], 'upsert'=>0,'multi'=>1],
        ['q' => [_id => ['$gte' => 10]], 'u' => ['status' => 1], 'upsert'=>0,'multi'=>1],
    ],
    'ordered' => 1, // 是否依次执行updates语句,true表示执行失败后继续后面的语句,false 表示一旦失败立即返回
]
  • 删除记录,limit只能是1或0!

$cmd = [
    'delete' => 'table', // collection 表名
    'deletes' => [
        ['q' => [_id => ['$lt' => 5]], 'limit' => 0], // 0表示所有,1表示删除1行
    ]
]
  • 插入数据

$cmd = [
    'delete' => 'table', // collection 表名
    'deletes' => [
        ['q' => [_id => ['$lt' => 5]], 'limit' => 0], // 0表示所有,1表示删除1行
    ]
]
  • 分组,排序

$cmd = [
    'aggregate' => 'table', // collection 表名
    'pipeline' => [
        '$group' => 'class',
        '$sort' => 'score'
    ]
]
  • 读取数据库状态

$cmd = [
    'replSetGetStatus' => 1,
]

辅助类 BSON

最有用的当然是 MongoDBBSONJavascriptMongoDBBSONObjectId ,分别是传入 javascript 脚本函数,和使用 mongodb 的ojectid。

异常 Exception

所有MongoDBDriver 产生的异常都可以用 MongoDBDriverExceptionException

$driverOptions 기본 읽기 및 쓰기 매개변수와 같은 기타 옵션

MongodbDriver CURD 작업

이것이 제가 생각한 것입니다 처음에 반인간성을 불러일으키는 것은 문서에 찾기, 업데이트, 삭제 같은 단어가 없다는 점입니다. Command 클래스와 Query 클래스만 있습니다.

Query 클래스가 약간 개선되었으며 몇 가지 쿼리 옵션을 제공합니다. 실제로 Mongo 데이터베이스의 모든 작업은 Command 클래스를 통해 수행할 수 있습니다. PHP 드라이버 문서에는 특정 commandOptions가 소개되어 있지 않습니다. mongodb를 처음 접했기 때문에 이 드라이버가 극도로 이상하고 반인간적이며 시작할 방법이 없다고 느꼈습니다.
이 드라이버를 사용하는 핵심은 Command 클래스를 사용하여 commandOption을 구성하는 것입니다.

그리고 이 commandOption에서는 다음을 수행해야 합니다. 자세한 내용은 mongodb 공식 문서에서 확인하세요.

MONGODB MANUAL - 데이터베이스 명령 모든 작업, 데이터 추가, 삭제, 수정 및 쿼리, 집계 정렬, 데이터베이스 상태, 사용자 인증 등을 이를 통해 수행할 수 있습니다. 명령. 다음은 몇 가지 예입니다

🎜데이터베이스에 연결🎜rrreee🎜🎜🎜조건부 쿼리, 요청 시 반환🎜rrreee🎜🎜🎜기록 수정🎜 li >rrreee🎜🎜🎜기록 삭제,제한은 1 또는 0만 가능합니다! 🎜rrreee🎜🎜🎜데이터 삽입🎜rrreee🎜🎜🎜그룹, 정렬🎜rrreee🎜 🎜🎜데이터베이스 상태 읽기🎜rrreee🎜보조 클래스 BSON🎜🎜가장 유용한 것은 물론 MongoDBBSONJavascriptMongoDBBSONObjectId입니다. javascript는 각각 스크립트 함수이고, mongodb를 사용하는 objectid입니다. 🎜🎜Exception🎜🎜MongoDBDriver에서 생성된 모든 예외는 MongoDBDriverExceptionException으로 캡처할 수 있습니다.🎜🎜위는 이 기사의 전체 내용입니다. 더 많은 관련 내용을 보려면 도움이 되길 바랍니다. PHP 중국어 웹사이트에 주목하세요! 🎜🎜관련 권장 사항: 🎜🎜🎜PHP는 Azure Storage Blob을 사용하여 파일을 업로드합니다🎜🎜🎜🎜🎜imagettfbbox의 텍스트 및 이미지와 PHP의 imagettftext를 자동으로 래핑하는 방법🎜🎜🎜

위 내용은 PHP7에서 MongoDB 드라이버 사용 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.