문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

단일 필드에 인덱스 만들기

이 페이지의 내용

  • 시작하기 전에
  • 절차
  • 단일 필드에 인덱스 만들기
  • 포함된 필드에 인덱스 만들기
  • 자세히 알아보기

단일 필드에 인덱스를 생성하여 해당 필드에 대한 쿼리 성능을 개선할 수 있습니다. 일반적으로 쿼리되는 필드를 인덱싱하면 해당 쿼리를 처리할 가능성이 높아지므로 MongoDB 는 문서를 검사하지 않고도 인덱스로 쿼리를 완전히 충족할 수 있습니다.

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

db.<collection>.createIndex( { <field>: <sortOrder> } )

참고

인덱스 정렬 순서

MongoDB는 어느 방향으로든 인덱스를 탐색할 수 있으므로, 단일 필드 인덱스의 경우 인덱스 키의 정렬 순서(오름차순 또는 내림차순)는 중요하지 않습니다.

다음 문서가 포함된 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" }
}
] )

다음 예제에서는 방법을 보여줍니다.

  • 단일 필드에 인덱스 만들기

  • 포함된 필드에 인덱스 만들기

GPA 로 학생을 자주 조회하는 학교 관리자를 생각해 보세요. 이러한 쿼리의 성능을 개선하기 위해 gpa 필드에 인덱스를 만들 수 있습니다.

db.students.createIndex( { gpa: 1 } )

인덱스는 다음과 같이 gpa 필드에서 선택하는 쿼리를 지원합니다.

db.students.find( { gpa: 3.6 } )
db.students.find( { gpa: { $lt: 3.4 } } )

내장된 문서 내의 필드에 인덱스를 만들 수 있습니다. 포함된 필드의 인덱스는 점 표기법을 사용하는 쿼리를 수행할 수 있습니다.

location 필드는 내장된 필드 citystate 를 포함하는 내장된 문서입니다. location.state 필드에 인덱스를 생성합니다.

db.students.createIndex( { "location.state": 1 } )

인덱스는 다음과 같이 location.state 필드에 대한 쿼리를 지원합니다.

db.students.find( { "location.state": "California" } )
db.students.find( { "location.city": "Albany", "location.state": "New York" } )
← 단일 필드 인덱스