AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

쿼리를 지원하는 인덱스 생성

인덱스는 쿼리에 의해 스캔된 모든 필드를 포함하는 경우 쿼리를 지원합니다. 쿼리는 컬렉션이 아니라 인덱스를 스캔합니다. 쿼리를 지원하는 인덱스를 생성하면 쿼리 성능이 크게 향상됩니다.

이 문서에서는 쿼리를 지원하는 인덱스를 생성하기 위한 전략을 설명합니다.

특정 컬렉션에서 단일 키에 대해서만 쿼리하는 경우 해당 컬렉션에 대해 단일 키 인덱스를 하나만 생성하면 됩니다. 예를 들어 product collection 컬렉션에서 category에 대한 인덱스를 만들 수 있습니다.

db.products.createIndex( { "category": 1 } )

때로는 하나의 키에 대해서만 쿼리하고 다른 경우에는 해당 키를 두 번째 키와 결합하여 쿼리하고자 한다면, 단일 키 인덱스를 생성하는 것보다 복합 인덱스를 생성하는 것이 더 효율적입니다. MongoDB는 두 쿼리 모두에 복합 인덱스를 사용합니다. 예를 들어 categoryitem 모두에 대한 인덱스를 생성할 수 있습니다.

db.products.createIndex( { "category": 1, "item": 1 } )

이렇게 하면 두 가지 옵션을 모두 사용할 수 있습니다. category만 쿼리할 수도 있고, categoryitem을 결합하여 쿼리할 수도 있습니다. 여러 필드에 대한 단일 복합 인덱스는 해당 필드의 '접두사' 하위 집합을 검색하는 모든 쿼리를 지원할 수 있습니다.

예시

컬렉션에 대해 다음과 같은 인덱스가 있습니다.

{ x: 1, y: 1, z: 1 }

다음의 인덱스가 지원하는 쿼리를 지원할 수 있습니다.

{ x: 1 }
{ x: 1, y: 1 }

접두사 인덱스가 더 나은 쿼리 성능을 제공할 수 있는 몇 가지 상황이 있습니다(예시: z가 큰 배열인 경우).

{ x: 1, y: 1, z: 1 } 인덱스는 다음 인덱스와 동일한 쿼리를 다수 지원할 수도 있습니다.

{ x: 1, z: 1 }

또한 { x: 1, z: 1 }에는 추가 용도가 있습니다. 다음의 쿼리를 살펴보세요.

db.collection.find( { x: 5 } ).sort( { z: 1} )

{ x: 1, z: 1 } 인덱스는 쿼리와 정렬 작업을 모두 지원하는 반면, { x: 1, y: 1, z: 1 } 인덱스는 쿼리만 지원합니다. 정렬에 대한 자세한 내용은 인덱스를 사용하여 쿼리 결과 정렬을 참조하세요.

MongoDB Atlas에서 호스팅되는 데이터의 경우 Atlas Search 인덱스를 사용하여 전체 텍스트 검색을 지원할 수 있습니다. 자세한 내용은 Atlas Search 인덱스 생성을 참조하세요.

(Atlas가 아닌) 자체 관리 배포서버의 경우, MongoDB 는 컬렉션 에서 string 콘텐츠 검색을 지원하는 text 인덱스 유형을 제공합니다. 자체 관리형 텍스트 인덱스에 학습 보려면 자체 관리형 배포의 텍스트 인덱스를 참조하세요.

문자열 비교에 인덱스를 사용하려면 작업에서 동일한 데이터 정렬도 지정해야 합니다. 즉, 작업에서 다른 데이터 정렬을 지정하는 경우 데이터 정렬이 있는 인덱스는 인덱싱된 필드에서 문자열 비교를 수행하는 작업을 지원할 수 없습니다.

경고

데이터 정렬이 없는 인덱스의 경우 데이터 정렬 인식 인덱스 키가 인덱스 키보다 클 수 있는데, 데이터 정렬로 구성된 인덱스는 정렬 순서를 달성하기 위해 ICU 데이터 정렬 키를 사용하기 때문입니다.