색인
인덱스는 MongoDB에서 쿼리를 효율적으로 실행할 수 있도록 지원합니다. 인덱스가 없으면 MongoDB는 collection 스캔, 즉 collection의 모든 문서를 스캔하여 쿼리와 일치하는 문서를 선택해야 합니다. 쿼리에 적합한 인덱스가 있는 경우 MongoDB는 이 인덱스를 사용하여 검사해야 하는 문서 수를 제한할 수 있습니다.
PHP 드라이버는 MongoDB의 크로스 드라이버 인덱스MongoDB\Collection
관리 를 구현하는 클래스를 통해 인덱스 관리를 지원합니다. 및 인덱스 열거 사양.
이 문서에서는 MongoDB PHP 라이브러리를 사용하여 인덱스를 생성, 나열 및 삭제하는 방법을 소개합니다. MongoDB 매뉴얼의 인덱스 참조는 MongoDB의 인덱싱에 대한 자세한 정보를 제공합니다.
인덱스 만들기
MongoDB\Collection::createIndex()
또는 MongoDB\Collection::createIndexes()
메서드를 사용하여 인덱스를 생성합니다. 각 메서드에 대한 자세한 내용은 메서드 참고 자료를 참조하세요.
다음 예시에서는 createIndex()
메서드를 사용하여 state
필드에 오름차순 인덱스를 생성합니다.
$collection = (new MongoDB\Client)->test->zips; $result = $collection->createIndex(['state' => 1]); var_dump($result);
인덱스를 생성하면 메서드는 사양에서 자동으로 생성된 이름을 반환합니다. 위 예제에서는 다음과 유사한 내용이 출력됩니다.
string(7) "state_1"
인덱스 나열
MongoDB\Collection::listIndexes()
메서드는 collection의 인덱스에 대한 정보를 제공합니다. MongoDB\Collection::listIndexes()
메서드는 각 인덱스에 대한 정보를 보는 데 사용할 수 있는 MongoDB\Model\IndexInfo
객체의 반복자를 반환합니다. 자세한 내용은 메서드 참고 자료를 참조하세요.
다음 예제에서는 test
데이터베이스의 zips
collection에 있는 모든 인덱스를 나열합니다.
$collection = (new MongoDB\Client)->test->zips; foreach ($collection->listIndexes() as $indexInfo) { var_dump($indexInfo); }
출력은 다음과 유사합니다:
object(MongoDB\Model\IndexInfo)#10 (4) { ["v"]=> int(1) ["key"]=> array(1) { ["_id"]=> int(1) } ["name"]=> string(4) "_id_" ["ns"]=> string(9) "test.zips" } object(MongoDB\Model\IndexInfo)#13 (4) { ["v"]=> int(1) ["key"]=> array(1) { ["state"]=> int(1) } ["name"]=> string(7) "state_1" ["ns"]=> string(9) "test.zips" }
드롭 인덱스
MongoDB\Collection::dropIndex()
메서드를 사용하면 단일 인덱스를 삭제하고 MongoDB\Collection::dropIndexes()
} 메서드를 사용하면 collection의 모든 인덱스를 삭제할 수 있습니다. 각 메서드에 대한 자세한 내용은 메서드 참고 자료를 참조하세요.
다음 예에서는 state_1
이라는 이름으로 단일 인덱스를 삭제합니다.
$collection = (new MongoDB\Client)->test->zips; $result = $collection->dropIndex('state_1'); var_dump($result);
작업 출력은 다음과 유사합니다.
object(MongoDB\Model\BSONDocument)#11 (1) { ["storage":"ArrayObject":private]=> array(2) { ["nIndexesWas"]=> int(2) ["ok"]=> float(1) } }