MongoDB\Driver\Query::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Query::__construct — 새 쿼리 만들기


설명

final public MongoDB\Driver\Query::__construct(array|object $filter, array $queryOptions = ?)

데이터베이스 쿼리를 나타내는 변경할 수 없는 값 개체인 새 MongoDB\Driver\Query를 생성합니다. 그런 다음 쿼리는 MongoDB\Driver\Manager::executeQuery()로 실행할 수 있습니다.


매개변수

filter (array|object)
» query predicate. 빈 술어는 컬렉션의 모든 문서와 일치합니다.

참고: 쿼리 기준을 평가할 때 MongoDB는 PHP의 비교​​유형 저글링 규칙과 다른 » BSON 유형에 대한 자체 비교 규칙에 따라 유형과 값을 비교합니다. 특수 BSON 유형을 일치시킬 때 쿼리 기준은 해당 BSON 클래스를 사용해야 합니다(예: » ObjectId와 일치시키기 위해 MongoDB\BSON\ObjectId 사용).

queryOptions

queryOptions

Option Type 설명
allowDiskUse bool 차단 정렬 작업을 처리하는 동안 MongoDB가 임시 디스크 파일을 사용하여 100MB 시스템 메모리 제한을 초과하는 데이터를 저장할 수 있습니다.
allowPartialResults bool 분할된 컬렉션에 대한 쿼리의 경우 오류를 발생시키는 대신 일부 분할을 사용할 수 없는 경우 mongos에서 부분 결과를 반환합니다.

지정하지 않으면 더 이상 사용되지 않는 "partial" 옵션으로 대체됩니다.

awaitData bool "tailable" 옵션과 함께 사용하여 데이터를 반환하지 않고 데이터 끝에 있는 경우 커서에 대한 getMore 작업을 일시적으로 차단합니다. 제한 시간이 지나면 쿼리가 정상적으로 반환됩니다.
batchSize int 첫 번째 배치에서 반환할 문서 수입니다. 기본값은 101입니다. 배치 크기가 0이면 커서가 설정되지만 첫 번째 배치에서는 문서가 반환되지 않습니다.

쿼리가 레거시 유선 프로토콜 OP_QUERY를 사용하는 3.2 이전 버전의 MongoDB에서 배치 크기가 1이면 일치하는 문서 수에 관계없이 커서가 닫힙니다.

collation array|object » Collation을 통해 사용자는 문자 대소문자 및 악센트 표시 규칙과 같은 문자열 비교를 위한 언어별 규칙을 지정할 수 있습니다. 데이터 정렬을 지정할 때 "locale" 필드는 필수입니다. 다른 모든 데이터 정렬 필드는 선택 사항입니다. 필드에 대한 설명은 » Collation 문서를 참조하세요.

데이터 정렬이 지정되지 않았지만 컬렉션에 기본 데이터 정렬이 있는 경우 작업은 컬렉션에 대해 지정된 데이터 정렬을 사용합니다. 컬렉션 또는 작업에 대해 데이터 정렬이 지정되지 않은 경우 MongoDB는 문자열 비교를 위해 이전 버전에서 사용된 단순 이진 비교를 사용합니다.

이 옵션은 MongoDB 3.4 이상에서 사용할 수 있으며 이전 서버 버전에 대해 지정된 경우 실행 시 예외가 발생합니다.

comment string 쿼리 프로필 데이터를 해석하고 추적하는 데 도움이 되도록 쿼리에 첨부할 주석입니다.

지정하지 않으면 더 이상 사용되지 않는 "$comment" 수정자로 대체됩니다.

exhaust bool 클라이언트가 쿼리된 모든 데이터를 완전히 읽을 것이라는 가정 하에 여러 "추가" 패키지에서 데이터를 완전히 스트리밍합니다. 많은 데이터를 가져오고 모든 데이터를 끌어내려는 것을 알고 있을 때 더 빠릅니다. 참고: 클라이언트는 연결을 닫지 않는 한 모든 데이터를 읽을 수 없습니다.

이 옵션은 MongoDB 3.2+의 find 명령에서 지원되지 않으며 드라이버가 레거시 유선 프로토콜 버전(즉, OP_QUERY)을 사용하도록 합니다.

explain bool true인 경우 반환된 MongoDB\Driver\Cursor에는 쿼리를 반환하는 데 사용되는 인덱스와 프로세스를 설명하는 단일 문서가 포함됩니다.

지정하지 않으면 더 이상 사용되지 않는 "$explain" 수정자로 폴백합니다.

이 옵션은 MongoDB 3.2+의 find 명령에서 지원되지 않으며 레거시 유선 프로토콜 버전(즉, OP_QUERY)을 사용할 때만 적용됩니다. » explain 명령은 MongoDB 3.0 이상에서 사용해야 합니다.

hint string|array|object 인덱스 사양. 인덱스 이름을 문자열 또는 인덱스 키 패턴으로 지정하십시오. 지정된 경우 쿼리 시스템은 힌트 인덱스를 사용하는 계획만 고려합니다.

지정하지 않으면 더 이상 사용되지 않는 "hint" 옵션으로 폴백합니다.

limit int 반환할 최대 문서 수입니다. 지정하지 않으면 기본적으로 제한 없음으로 설정됩니다. 제한이 0이면 제한을 설정하지 않는 것과 같습니다.

음수 한계는 "singleBatch" 옵션이 true로 설정된 양수 한계로 해석됩니다. 이 동작은 이전 버전과의 호환성을 위해 지원되지만 더 이상 사용되지 않는 것으로 간주해야 합니다.

max array|object 특정 인덱스에 대한 배타적 상한입니다.

지정하지 않으면 더 이상 사용되지 않는 "$max" 수정자로 대체됩니다.

maxAwaitTimeMS int 데이터를 사용할 수 없는 경우 서버가 getMore 작업을 차단하는 시간 제한(밀리초)을 나타내는 양의 정수입니다. 이 옵션은 "tailable""awaitData" 옵션과 함께 사용해야 합니다.
maxScan int

경고 이 옵션은 더 이상 사용되지 않으며 사용해서는 안 됩니다.

쿼리를 실행할 때 스캔할 문서 또는 인덱스 키의 최대 수를 나타내는 양의 정수입니다.

지정하지 않으면 더 이상 사용되지 않는 "$maxScan" 수정자로 대체됩니다.

maxTimeMS int 커서에서 작업을 처리하기 위한 누적 시간 제한(밀리초)입니다. MongoDB는 다음 인터럽트 지점에서 가장 빨리 작업을 중단합니다.

지정하지 않으면 더 이상 사용되지 않는 "$maxTimeMS" 수정자로 대체됩니다.

min array|object 특정 인덱스에 대한 포괄적인 하한입니다.

지정하지 않으면 더 이상 사용되지 않는 "$min" 수정자로 대체됩니다.

modifiers array 쿼리의 출력 또는 동작을 수정하는 » 메타 연산자. 이러한 연산자의 사용은 더 이상 사용되지 않으며 명명된 옵션을 선호합니다.
noCursorTimeout bool 비활성 기간(10분) 후에 서버가 유휴 커서 시간 초과를 방지합니다.
oplogReplay bool 복제본 세트의 내부 사용입니다. oplogReplay를 사용하려면 필터에 다음 조건을 포함해야 합니다.
[ 'ts' => [ '$gte' => <timestamp> ] ]
                               

참고: 이 옵션은 1.8.0 릴리스부터 더 이상 사용되지 않습니다.

projection array|object 반환된 문서에 포함할 필드를 결정하기 위한 » 프로젝션 사양입니다.

ODM functionality을 사용하여 문서를 원래 PHP 클래스로 역직렬화하는 경우 프로젝션에 __pclass 필드를 포함해야 합니다. 이것은 역직렬화가 작동하는 데 필요하며 이것이 없으면 드라이버는 (기본적으로) stdClass 개체를 대신 반환합니다.

readConcern MongoDB\Driver\ReadConcern 작업에 적용할 읽기 관심사입니다. 기본적으로 MongoDB Connection URI의 읽기 문제가 사용됩니다.

이 옵션은 MongoDB 3.2 이상에서 사용할 수 있으며 이전 서버 버전에 대해 지정된 경우 실행 시 예외가 발생합니다.

returnKey bool true인 경우 결과 문서의 인덱스 키만 반환합니다. 기본값은 false입니다. true이고 find 명령이 인덱스를 사용하지 않는 경우 반환된 문서는 비어 있습니다.

지정되지 않은 경우 더 이상 사용되지 않는 "$returnKey" 수정자로 폴백합니다.

showRecordId bool 각 문서에 대한 레코드 식별자를 반환할지 여부를 결정합니다. true인 경우 반환된 문서에 최상위 "$recordId" 필드를 추가합니다.

지정되지 않은 경우 더 이상 사용되지 않는 "$showDiskLoc" 수정자로 폴백합니다.

singleBatch bool 첫 번째 일괄 처리 후에 커서를 닫을지 여부를 결정합니다. 기본값은 false입니다.
skip int 건너뛸 문서 수입니다. 기본값은 0입니다.
snapshot bool

경고 이 옵션은 더 이상 사용되지 않으며 사용해서는 안 됩니다.

중간에 쓰기 작업으로 인해 커서가 문서를 두 번 이상 반환하지 않도록 합니다.

지정하지 않으면 더 이상 사용되지 않는 "$snapshot" 수정자로 대체됩니다.

sort array|object 결과 순서에 대한 정렬 사양입니다.

지정하지 않으면 더 이상 사용되지 않는 "$orderby" 수정자로 대체됩니다.

tailable bool 캡이 있는 컬렉션에 대해 꼬리말이 가능한 커서를 반환합니다.

오류/예외


변경 로그

버전 설명
PECL mongodb 1.8.0 "allowDiskUse" 옵션을 추가했습니다.

"oplogReplay" 옵션은 더 이상 사용되지 않습니다.

PECL mongodb 1.5.0 "maxScan""snapshot" 옵션은 더 이상 사용되지 않습니다.
PECL mongodb 1.3.0 "maxAwaitTimeMS" 옵션을 추가했습니다.
PECL mongodb 1.2.0 "allowPartialResults", "collation", "comment", "hint", "max", "maxScan", "maxTimeMS", "min", "returnKey", "showRecordId""snapshot" 옵션을 추가했습니다.

"partial" 옵션의 이름을 "allowPartialResults"로 변경했습니다. 이전 버전과의 호환성을 위해 "allowPartialResults"가 지정되지 않은 경우에도 "partial"이 읽힙니다.

더 이상 사용되지 않는 레거시 "secondaryOk" 옵션을 제거했습니다. 기존 유선 프로토콜 OP_QUERY를 사용하는 쿼리의 경우 드라이버는 » Server Selection Specification에 따라 필요에 따라 secondaryOk 비트를 설정합니다.

PECL mongodb 1.1.0 "readConcern" 옵션을 추가했습니다.

Examples

예제 #1 MongoDB\Driver\Query::__construct() 예제

                  
<?php
/* Select only documents authord by "bjori" with at least 100 views */
$filter = [
    'author' => 'bjori',
    'views' => [
        '$gte' => 100,
    ],
];

$options = [
    /* Only return the following fields in the matching documents */
    'projection' => [
        'title' => 1,
        'article' => 1,
    ],
    /* Return the documents in descending order of views */
    'sort' => [
        'views' => -1
    ],
];

$query = new MongoDB\Driver\Query($filter, $options);

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY);
$cursor = $manager->executeQuery('databaseName.collectionName', $query, $readPreference);

foreach($cursor as $document) {
    var_dump($document);
}

?>
                  
                

기타