문서 홈 → 애플리케이션 개발 → MongoDB 매뉴얼
배열 필드에 인덱스 생성
배열 값이 포함된 필드에 인덱스를 생성하여 해당 필드에 대한 쿼리 성능을 개선할 수 있습니다. 배열 값이 포함된 필드에 인덱스를 만들면 MongoDB는 해당 인덱스를 멀티키 인덱스로 저장합니다.
인덱스를 만들려면 db.collection.createIndex()
메서드를 사용합니다. 작업은 다음 프로토타입과 유사해야 합니다:
db.<collection>.createIndex( { <field>: <sortOrder> } )
이 작업에 대하여
이 페이지의 예에서는 이러한 문서가 포함된 students
컬렉션을 사용합니다.
db.students.insertMany( [ { "name": "Andre Robinson", "test_scores": [ 88, 97 ] }, { "name": "Wei Zhang", "test_scores": [ 62, 73 ] }, { "name": "Jacob Meyer", "test_scores": [ 92, 89 ] } ] )
하나 이상의 90
보다 큰 test_score
가 있는 학생을 반환하는 쿼리를 정기적으로 실행합니다. 이 쿼리의 성능을 개선하기 위해 필드에 인덱스를 만들 수 있습니다.test_scores
절차
다음 작업은 students
컬렉션의 test_scores
필드에 오름차순 다중 키 인덱스를 생성합니다.
db.students.createIndex( { test_scores: 1 } )
test_scores
에 배열 값이 포함되어 있으므로 MongoDB는 인덱스를 멀티키 인덱스로 저장합니다.
결과
인덱스에는 test_scores
필드에 나타나는 각 개별 값에 대한 키가 포함되어 있습니다. 인덱스는 오름차순입니다. 즉, 키가 [ 62, 73, 88, 89, 92, 97 ]
순서로 저장됩니다.
인덱스는 test_scores
필드에서 선택하는 쿼리를 지원합니다. 예를 들어, 다음 쿼리는 test_scores
배열의 요소 중 하나 이상이 90보다 큰 문서를 반환합니다.
db.students.find( { test_scores: { $elemMatch: { $gt: 90 } } } )
출력:
[ { _id: ObjectId("632240a20646eaee87a56a80"), name: 'Andre Robinson', test_scores: [ 88, 97 ] }, { _id: ObjectId("632240a20646eaee87a56a82"), name: 'Jacob Meyer', test_scores: [ 92, 89 ] } ]
자세히 알아보기
임베디드 문서 필드에 다중 키 인덱스를 만드는 방법을 알아보려면 배열의 임베디드 필드에 인덱스 만들기를 참조하세요.
다중 키 인덱스 바운드에 대해 알아보려면 다중 키 인덱스 바운드를참조하세요.