MongoDB\Collection::createIndexes()
정의
매개변수
$indexes
: 배열컬렉션에 생성할 인덱스입니다.
예를 들어 다음은
username
필드에 고유 인덱스를 지정하고email
및createdAt
필드에 복합 인덱스를 지정합니다.[ [ 'key' => [ 'username' => -1 ], 'unique' => true ], [ 'key' => [ 'email' => 1, 'createdAt' => 1 ] ], ] $options
: 배열원하는 옵션을 지정하는 배열입니다.
이름유형설명논평혼합사용자가 데이터베이스 프로파일러, currentOp 출력 및 로그를 통해 작업을 추적하는 데 도움이 되는 임의의 주석을 지정할 수 있습니다.
이 옵션은 MongoDB 4.4부터 사용할 수 있으며 이전 서버 버전에 대해 지정된 경우 실행 시 예외가 발생합니다.
버전 1.13에 새로 추가되었습니다.
commitQuorum문자열|정수프라이머리가 인덱스를 준비됨으로 표시하기 전에 프라이머리를 포함한 복제본 세트의 데이터 보유 노드가 인덱스 빌드를 성공적으로 완료해야 하는 멤버의 수를 지정합니다.
이 옵션은 쓰기 고려 (write concern)의
w
필드에 더하기"votingMembers"
에 대해 동일한 값을 허용하며, 이는 모든 투표 데이터 보유 노드를 나타냅니다.이 기능은 4.4 이전의 서버 버전에서는 지원되지 않으며, 사용 시 실행 시 예외가 발생합니다.
버전 1.7에 추가 되었습니다.
최대 시간 (MS)integer커서에서 작업을 처리하는 데 걸리는 누적 시간 제한(밀리초)입니다. MongoDB는 중단 지점 이후 가장 빠른 시점에 작업을 중단합니다.
버전 1.3에 새로 추가되었습니다.
세션작업과 연결할 클라이언트 세션입니다.
버전 1.3에 새로 추가되었습니다.
쓰기 고려
반환 값
문자열 배열로 생성된 인덱스의 이름입니다.
오류/예외
옵션이 사용되지만 선택한 서버에서 지원되지 않는 경우 MongoDB\Exception\UnsupportedException
입니다(예: collation
, readConcern
, writeConcern
).
MongoDB\Exception\InvalidArgumentException
매개변수 또는 옵션의 구문 분석과 관련된 오류의 경우입니다.
MongoDB\Driver\Exception\RuntimeException 확장 수준의 기타 오류(예: 연결 오류)의 경우.
행동
$indexes
매개 변수
$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 매뉴얼의 인덱스 문서