Docs Menu
Docs Home
/ / /
PHP 라이브러리 매뉴얼

인덱스를 사용하여 쿼리 최적화

이 페이지의 내용

  • 개요
  • 샘플 애플리케이션
  • 단일 필드 인덱스
  • 복합 인덱스
  • Multikey Index
  • 지리 공간적 인덱스
  • 고유 인덱스
  • 와일드카드 인덱스
  • 클러스터된 인덱스
  • Text Index
  • 인덱스 나열
  • 인덱스 삭제
  • Atlas 검색 인덱스 관리
  • Atlas Search 인덱스 만들기
  • 검색 인덱스 나열
  • 검색 인덱스 업데이트
  • Atlas Search 인덱스 삭제

이 페이지에서는 MongoDB PHP 라이브러리를 사용하여 다양한 유형의 인덱스를 관리 하는 방법을 보여주는 복사 가능한 코드 예제를 볼 수 있습니다.

인덱스 작업에 학습 보려면 인덱스 고려 사항 및 관리 가이드 를 참조하세요. 이 페이지에 표시된 인덱스에 학습 보려면 각 섹션에 제공된 링크를 참조하세요.

이 페이지의 예시 를 사용하려면 코드 예시 를 샘플 애플리케이션 또는 자체 애플리케이션 에 복사합니다. MONGODB_URI 환경 변수를 MongoDB deployment 서버의 연결 문자열 로 설정하다 하고 <database><collection> 자리 표시자를 대상 네임스페이스 값으로 바꿉니다.

다음 샘플 애플리케이션을 사용하여 이 페이지의 코드 예제를 테스트할 수 있습니다. 샘플 애플리케이션을 사용하려면 다음 단계를 수행하세요.

  1. 프로젝트 에 MongoDB PHP 라이브러리가 설치되어 있는지 확인합니다. MongoDB PHP 라이브러리 설치에 학습 보려면 다운로드 및 설치 가이드 를 참조하세요.

  2. 다음 코드를 복사하여 새 .php 파일에 붙여넣습니다.

  3. 이 페이지에서 코드 예제를 복사하여 파일의 지정된 줄에 붙여넣습니다.

1<?php
2
3require __DIR__ . '/../vendor/autoload.php';
4
5$uri = getenv('MONGODB_URI') ?: throw new RuntimeException('Set the MONGODB_URI variable to your Atlas URI that connects to the sample dataset');
6$client = new MongoDB\Client($uri);
7
8$collection = $client->selectCollection('<database>', '<collection>');
9
10// Start example code here
11
12// End example code here

일부 예제에서는 toJSON() 함수를 사용하여 BSON 문서인 변경 이벤트를 확장 JSON 으로 표현합니다. 이 함수를 사용하려면 다음 코드를 애플리케이션 파일 에 붙여넣습니다.

function toJSON(object $document): string
{
return MongoDB\BSON\Document::fromPHP($document)->toRelaxedExtendedJSON();
}

다음 예에서는 지정된 필드에 오름차순 인덱스를 생성합니다.

$indexName = $collection->createIndex(['<field name>' => 1]);

단일 필드 인덱스에 학습 보려면 단일 필드 인덱스 가이드 를 참조하세요.

다음 예시 에서는 지정된 필드에 두 개의 오름차순 인덱스로 구성된 복합 인덱스 를 만듭니다.

$indexName = $collection->createIndex(
['<field name 1>' => 1, '<field name 2>' => 1]
);

복합 인덱스에 대해 자세히 알아보려면 복합 인덱스 가이드를 참조하세요.

다음 예시 에서는 지정된 배열 값 필드 에 오름차순 멀티키 인덱스 를 생성합니다.

$indexName = $collection->createIndex(['<array field name>' => 1]);

멀티키 인덱스에 대해 자세히 알아보려면 멀티키 인덱스 가이드를 참조하세요.

다음 예시 에서는 GeoJSON 객체 값이 있는 지정된 필드 에 2dsphere 인덱스 를 생성합니다.

$indexName = $collection->createIndex(
[ '<GeoJSON object field>' => '2dsphere']
);

GeoJSON 데이터 유형 에 학습 보려면 MongoDB Server 매뉴얼에서 GeoJSON 객체 를 참조하세요.

다음 예시 에서는 지정된 필드 에 오름차순 고유 인덱스 를 생성합니다.

$indexName = $collection->createIndex(['<field name>' => 1], ['unique' => true]);

다음 예시 에서는 컬렉션 에 오름차순 와일드카드 인덱스 를 생성합니다.

$indexName = $collection->createIndex(['$**' => 1]);

지정된 데이터베이스 에 새 컬렉션 을 만들 때 클러스터형 인덱스 를 만들 수 있습니다. 다음 예시 에서는 _id 필드 에 오름차순 클러스터형 인덱스 를 사용하여 새 컬렉션 을 만듭니다.

$options = [
'clusteredIndex' => [
'key' => ['_id' => 1],
'unique' => true
]
];
$database->createCollection('<collection name>', $options);

다음 예에서는 지정된 문자열 필드에 텍스트 인덱스를 생성합니다.

$indexName = $collection->createIndex(['<field name>' => 'text']);

다음 예시 에서는 지정된 컬렉션 의 인덱스 목록을 출력합니다.

foreach ($collection->listIndexes() as $indexInfo) {
echo $indexInfo;
}

다음 예에서는 지정된 이름의 인덱스를 삭제합니다.

$collection->dropIndex('<index name>');

인덱스 삭제에 학습 보려면 인덱스 고려 사항 및 관리 가이드 에서 인덱스 제거 를 참조하세요.

다음 섹션에는 Atlas Search 인덱스를 관리 하는 방법을 설명하는 코드 예제가 포함되어 있습니다.

참고

Atlas Search 인덱스 관리는 비동기식입니다.

MongoDB PHP 라이브러리는 Atlas Search 인덱스를 비동기적으로 관리합니다. 다음 섹션에서 설명하는 라이브러리 메서드는 서버 응답을 즉시 반환하지만 검색 인덱스에 대한 변경 사항은 배경 에서 발생하며 잠시 후까지 완료되지 않을 수 있습니다.

Atlas Search 인덱스에 대해 자세히 알아보려면 Atlas Search 인덱스 가이드를 참조하세요.

다음 예에서는 지정된 필드에 Atlas Search 인덱스를 생성합니다.

$indexName = $collection->createSearchIndex(
['mappings' => ['dynamic' => true]],
['name' => '<Search index name>']
);

다음 예시에서는 지정된 컬렉션의 Atlas Search 인덱스 목록을 출력합니다.

foreach ($collection->listSearchIndexes() as $indexInfo) {
echo toJSON($indexInfo), PHP_EOL;
}

다음 예에서는 지정된 새 인덱스 정의로 기존 Atlas Search 인덱스를 업데이트합니다.

$collection->updateSearchIndex(
'<Search index name>',
['mappings' => [
'dynamic' => false,
'fields' => [
'<string field name>' => [
'type' => 'string',
'analyzer' => 'lucene.standard'
]
]
]]
);

다음 예에서는 지정된 이름의 Atlas Search 인덱스를 삭제합니다.

$collection->dropSearchIndex('<Search index name>');

돌아가기

애그리게이션을 통한 데이터 변환