Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/ / /

복합 색인 만들기

복합 인덱스 는 여러 필드에 대한 참조를 포함하는 인덱스입니다. 복합 인덱스는 인덱스의 필드 또는 인덱스 접두사의 필드에 대한 쿼리 성능을 향상시킵니다.

복합 인덱스를 만들려면 db.collection.createIndex() 메서드를 사용합니다.

db.<collection>.createIndex( {
<field1>: <sortOrder>,
<field2>: <sortOrder>,
...
<fieldN>: <sortOrder>
} )

단일 복합 인덱스에 최대 32개의 필드를 지정할 수 있습니다.

이러한 문서가 포함된 students 컬렉션을 만듭니다.

db.students.insertMany([
{
"name": "Alice",
"gpa": 3.6,
"location": { city: "Sacramento", state: "California" }
},
{
"name": "Bob",
"gpa": 3.2,
"location": { city: "Albany", state: "New York" }
}
])

다음 작업은 namegpa 필드를 포함하는 복합 인덱스를 생성합니다.

db.students.createIndex( {
name: 1,
gpa: -1
} )

이 예시에서는

  • name 인덱스는 오름차순(1)입니다.

  • gpa의 인덱스는 내림차순(-1)입니다.

생성된 인덱스는 다음을 선택하는 쿼리를 지원합니다.

  • namegpa 필드 모두입니다.

  • name은 복합 인덱스의 접두사이므로 name 필드만 해당됩니다.

예를 들어 인덱스는 다음 쿼리를 지원합니다.

db.students.find( { name: "Alice", gpa: 3.6 } )
db.students.find( { name: "Bob" } )

gpa는 인덱스 접두사의 일부가 아니므로 인덱스는 gpa 필드에 대한 쿼리만 지원하지 않습니다. 예를 들어 인덱스는 이 쿼리를 지원하지 않습니다.

db.students.find( { gpa: { $gt: 3.5 } } )

돌아가기

복합

이 페이지의 내용