MongoDB\Collection::createIndexes()
정의
매개변수
$indexes
: 배열컬렉션에 생성할 인덱스입니다.
예를 들어 다음은
username
필드에 고유 인덱스를 지정하고email
및createdAt
필드에 복합 인덱스를 지정합니다.[ [ 'key' => [ 'username' => -1 ], 'unique' => true ], [ 'key' => [ 'email' => 1, 'createdAt' => 1 ] ], ] $options
: 배열원하는 옵션을 지정하는 배열입니다.
이름유형설명comment혼합사용자가 데이터베이스 프로파일러, currentOp 출력 및 로그를 통해 작업을 추적하는 데 도움이 되는 임의의 주석을 지정할 수 있습니다.
이 옵션은 MongoDB 4.4부터 사용할 수 있으며 이전 서버 버전에 대해 지정된 경우 실행 시 예외가 발생합니다.
버전 1.13에 새로 추가되었습니다.
commitQuorum문자열|정수프라이머리가 인덱스를 준비됨으로 표시하기 전에 프라이머리를 포함한 복제본 세트의 데이터 보유 노드가 인덱스 빌드를 성공적으로 완료해야 하는 멤버의 수를 지정합니다.
이 옵션은 쓰기 고려 (write concern)의
w
필드에 더하기"votingMembers"
에 대해 동일한 값을 허용하며, 이는 모든 투표 데이터 보유 노드를 나타냅니다.이 기능은 4.4 이전의 서버 버전에서는 지원되지 않으며, 사용 시 실행 시 예외가 발생합니다.
버전 1.7에 추가 되었습니다.
최대 시간 (MS)integer커서에서 작업을 처리하는 데 걸리는 누적 시간 제한(밀리초)입니다. MongoDB는 중단 지점 이후 가장 빠른 시점에 작업을 중단합니다.
버전 1.3에 새로 추가되었습니다.
Session작업과 연결할 클라이언트 세션입니다.
버전 1.3에 새로 추가되었습니다.
쓰기 고려
Return Values
문자열 배열로 생성된 인덱스의 이름입니다.
오류/예외
옵션이 사용되지만 선택한 서버에서 지원되지 않는 경우 MongoDB\Exception\UnsupportedException
입니다(예: collation
, readConcern
, writeConcern
).
MongoDB\Exception\InvalidArgumentException
매개변수 또는 옵션의 구문 분석과 관련된 오류의 경우입니다.
MongoDB\ 드라이버\Exception\RuntimeException 확장 수준의 다른 오류(예: 연결 오류).
행동
$indexes
parameter
$indexes
매개변수는 인덱스 사양 문서의 배열입니다. $indexes
의 각 요소는 그 자체로 key
필드가 있는 배열 또는 객체여야 하며, 이는 createIndex()
의 $key
매개변수에 해당합니다. 배열 또는 객체에는 createIndex()
에서 허용하는 인덱스 옵션에 해당하는 다른 필드가 포함될 수 있습니다. 지원되는 인덱스 생성 옵션의 전체 목록은 MongoDB 매뉴얼의 createIndexes 명령 참조를 참조하세요.
예를 들어 다음 $indexes
매개변수는 두 개의 인덱스를 생성합니다. 첫 번째는 username
필드의 오름차순 고유 인덱스이고 두 번째는 사용자 지정 이름을 가진 loc
필드의 2dsphere 인덱스입니다.
[ [ 'key' => [ 'username' => 1 ], 'unique' => true ], [ 'key' => [ 'loc' => '2dsphere' ], 'name' => 'geo_index' ], ]
예시
다음 예제에서는 test
데이터베이스의 restaurants
collection에 대해 두 개의 인덱스를 만듭니다. 하나의 인덱스는 borough
및 cuisine
필드에 대한 복합 인덱스이고, 다른 하나는 사용자 지정 이름을 가진 loc
필드에 대한 2dsphere 인덱스입니다.
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants'); $indexNames = $collection->createIndexes([ [ 'key' => [ 'borough' => 1, 'cuisine' => 1] ], [ 'key' => [ 'loc' => '2dsphere'], 'name' => 'geo_index' ], ]); var_dump($indexNames);
이 경우 출력은 다음과 유사합니다:
array(2) { [0]=> string(19) "borough_1_cuisine_1" [1]=> string(9) "geo_index" }
다음도 참조하세요.
MongoDB 매뉴얼의 createIndexes 명령 참조
MongoDB 매뉴얼의 인덱스 문서