개요
복합 인덱스 는 컬렉션 문서 내의 여러 필드에 대한 참조를 보유하여 쿼리 및 정렬 성능을 향상시킵니다.
복합 인덱스 생성할 때는 다음 세부 정보를 지정해야 합니다.
인덱스 를 생성할 필드
각 필드 의 정렬 순서(오름차순 또는 내림차순)
샘플 데이터
이 가이드 의 예제에서는 Atlas 샘플 데이터 세트의 sample_mflix
데이터베이스 에 있는 movies
컬렉션 사용합니다. Ruby 애플리케이션 에서 이 컬렉션 에 액세스 하려면 Atlas cluster 에 연결하는 Mongo::Client
객체 만들고 database
및 collection
변수에 다음 값을 할당합니다.
database = client.use('sample_mflix') collection = database[:movies]
무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 Atlas 시작하기 가이드 를 참조하세요.
복합 색인 만들기
create_one
메서드를 사용하여 복합 인덱스 만듭니다. 다음 예시 runtime
필드 에 내림차순으로 인덱스를 생성하고 year
필드 에 오름차순으로 인덱스 생성합니다.
collection.indexes.create_one({ runtime: -1, year: 1 })
인덱스 생성 확인
컬렉션 의 인덱스를 나열하여 인덱스 생성되었는지 확인할 수 있습니다. 다음 출력과 같이 목록에 runtime
및 year
에 대한 인덱스 표시되어야 합니다.
puts collection.indexes.collect(&:to_json)
{"v": 2, "key": {"runtime": -1, "year": 1}, "name": "runtime_-1_year_1"}
쿼리 예시
다음은 runtime
및 year
필드에 생성된 인덱스 가 적용되는 쿼리 의 예시 입니다.
filter = { '$and' => [ { runtime: { '$gt' => 90 } }, { year: { '$gt' => 2005 } } ] } doc = collection.find(filter).first if doc puts doc.to_json else puts "No document found" end
{"_id":...,"runtime": 91,...,"title": "Monster House",...,"year": 2006,...}
추가 정보
인덱스를 관리하는 방법을 보여주는 실행 가능한 예제를 보려면 인덱스를 사용하여 쿼리 최적화를 참조하세요.
복합 인덱스에 학습 보려면 MongoDB Server 매뉴얼의 복합 인덱스 를 참조하세요.
API 문서
이 가이드에서 설명하는 메서드에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.