MongoDB\Driver\Manager::executeQuery
(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery — 데이터베이스 쿼리 실행
설명
final public MongoDB\Driver\Manager::executeQuery(string $namespace
, MongoDB\Driver\Query $query
, array $options
= array()): MongoDB\Driver\Cursor
"readPreference"
옵션에 따라 서버를 선택하고 해당 서버에서 쿼리를 실행합니다. 기본적으로 MongoDB Connection
URI URI의 읽기 기본 설정이 사용됩니다.
매개변수
namespace
(string)- 정규화된 네임스페이스(예:
"databaseName.collectionName"
). -
query
(MongoDB\Driver\Query) - 실행할 쿼리입니다.
options
-
options
Option Type 설명 readPreference MongoDB\Driver\ReadPreference 작업을 위한 서버를 선택하는 데 사용할 읽기 기본 설정입니다. session MongoDB\Driver\Session 작업과 연결할 세션입니다.
반환 값
성공하면 MongoDB\Driver\Cursor를 반환합니다.
오류/예외
- 인수 구문 분석 오류에 대해 MongoDB\Driver\Exception\InvalidArgumentException을 던집니다.
- (인증 이외의 이유로) 서버 연결이 실패하면 MongoDB\Driver\Exception\ConnectionException을 던집니다.
- 인증이 필요하고 실패하면 MongoDB\Driver\Exception\AuthenticationException을 던집니다.
- 다른 오류(예: 잘못된 쿼리 연산자)에서 MongoDB\Driver\Exception\RuntimeException을 던집니다.
변경 로그
버전 | 설명 |
---|---|
PECL mongodb 1.4.0 | 세 번째 매개변수는 이제 options 배열입니다. 이전 버전과의 호환성을 위해 이 매개변수는 여전히 MongoDB\Driver\ReadPreference 개체를 허용합니다. |
Examples
예제 #1 MongoDB\Driver\Manager::executeQuery() 예제
<?php
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection', $bulk);
$filter = ['x' => ['$gt' => 1]];
$options = [
'projection' => ['_id' => 0],
'sort' => ['x' => -1],
];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('db.collection', $query);
foreach ($cursor as $document) {
var_dump($document);
}
?>
위의 예는 다음을 출력합니다.
object(stdClass)#6 (1) { ["x"]=> int(3) } object(stdClass)#7 (1) { ["x"]=> int(2) }
예제 #2 쿼리 실행 시간 제한
"maxTimeMS"
MongoDB\Driver\Query 옵션은 쿼리 실행 시간을 제한하는 데 사용할 수 있습니다. 이 시간 제한은 서버 측에서 적용되며 네트워크 대기 시간을 고려하지 않습니다. 자세한 내용은 MongoDB 설명서에서 » Terminate Running Operations를 참조하세요.
<?php
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$filter = ['x' => ['$gt' => 1]];
$options = [
'maxTimeMS' => 1000,
];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('db.collection', $query);
foreach ($cursor as $document) {
var_dump($document);
}
?>
서버에서 1초의 실행 시간 후에도 쿼리가 완료되지 않으면 MongoDB\Driver\Exception\ExecutionTimeoutException이 발생합니다.
기타
- MongoDB\Driver\Manager::removeSubscriber() - 이 Manager에 모니터링 이벤트 구독자를 등록 취소합니다.
- MongoDB\Driver\Cursor
- MongoDB\Driver\Query
- MongoDB\Driver\ReadPreference
- MongoDB\Driver\Server::executeQuery() - 이 서버에서 데이터베이스 쿼리 실행