Docs Menu
Docs Home
/
MongoDB 매뉴얼
/

단일 필드 인덱스

이 페이지의 내용

  • 호환성
  • 단일 필드에 오름차순 인덱스 만들기
  • 포함된 필드에 인덱스 만들기
  • 내장된 문서에 인덱스 만들기
  • 추가 고려 사항

MongoDB 는 문서 컬렉션 에있는 모든 필드 의 인덱스를 완벽하게 지원 합니다. 기본값 으로 모든 컬렉션에는 _id 필드 에 대한 인덱스 가 있으며, 애플리케이션과 사용자는 중요한 쿼리 및 작업을 지원 하기 위해 추가 인덱스를 추가할 수 있습니다.

이 문서에서는 단일 필드에 대해 오름차순/내림차순 인덱스를 설명합니다.

'score' 필드에 대한 인덱스 다이어그램은 오름차순으로 표시됩니다.

MongoDB Atlas에서 호스팅되는 배포에 단일 필드 인덱스를 사용할 수 있습니다.

MongoDB Atlas에서 호스팅되는 배포의 인덱스 관리에 대해 자세히 알아보려면 인덱스 생성, 보기, 삭제 및 숨기기를 참조하세요.

다음 샘플 문서가 포함된 schools 컬렉션이 있다고 가정합니다.

db.schools.insertOne(
{
"_id": ObjectId("570c04a4ad233577f97dc459"),
"studentsEnrolled": 1034,
"location": { state: "NY", city: "New York" }
}
)

다음 작업은 studentsEnrolled schools collection의 필드에 오름차순 인덱스를 생성합니다.

db.schools.createIndex( { studentsEnrolled: 1 } )

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

db.schools.find( { studentsEnrolled: 1034 } )
db.schools.find( { studentsEnrolled: { $gt: 500 } } )

문서의 최상위 필드를 인덱싱하는 것처럼 내장된 문서 내의 필드에 인덱스를 만들 수 있습니다. 내장된 필드의 인덱스는 인덱스에 내장된 문서의 최대 인덱스 크기까지 전체 콘텐츠를 포함하는 내장된 문서의 인덱스 와 다릅니다. 대신 내장된 필드의 인덱스를 사용하면 '점 표기법'을 사용하여 내장된 문서를 인트로스펙션할 수 있습니다.

다음 샘플 문서와 유사한 문서가 들어 있는 records 라는 컬렉션이 있다고 가정해 보겠습니다.

{
"_id": ObjectId("570c04a4ad233577f97dc459"),
"studentsEnrolled": 1034,
"location": { state: "NY", city: "New York" }
}

다음 작업은 location.state 필드에 인덱스를 생성합니다.

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

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

db.schools.find( { "location.state": "CA" } )
db.schools.find( { "location.city": "Albany", "location.state": "NY" } )

내장된 문서 전체에 인덱스를 생성할 수도 있습니다.

내장된 문서에 인덱스를 만들면 내장된 문서 전체를 지정하는 쿼리만 인덱스를 사용합니다. 문서 내의 특정 필드에 대한 쿼리는 인덱스를 사용하지 않습니다.

다음 샘플 문서와 유사한 문서가 들어 있는 schools 라는 컬렉션이 있다고 가정해 보겠습니다.

{
"_id": ObjectId("570c04a4ad233577f97dc459"),
"studentsEnrolled": 1034,
"location": { state: "NY", city: "New York" }
}

location 필드는 내장된 문서로, 내장된 필드 citystate 를 포함합니다. 다음 명령은 location 필드 전체에 인덱스를 생성합니다.

db.schools.createIndex( { location: 1 } )

다음 쿼리는 location 필드의 인덱스를 사용할 수 있습니다.

db.schools.find( { location: { city: "New York", state: "NY" } } )

참고

쿼리는 인덱스를 사용할 수 있지만 결과 집합에는 위의 샘플 문서가 포함되지 않습니다. 내장된 문서에 대해 동등성 매치를 수행할 때는 필드 순서가 중요하며, 내장된 문서가 정확히 일치해야 합니다. 내장 된 문서 쿼리에 대한 자세한 내용은 내장된 문서 쿼리를 참조하세요.

인덱스를 빌드하는 동안 애플리케이션의 성능이 저하되거나 인덱싱되는 collection에 대한 읽기/쓰기 액세스가 제한될 수 있습니다.

인덱스 빌드 프로세스에 대한 자세한 내용은 채워진 collection 에 대한 인덱스 빌드, 특히 복제된 환경에서 의 인덱스 빌드 섹션을 참조하세요.

일부 드라이버는 1 NumberLong(1) 을(를) 사용하여 인덱스 순서를 지정합니다. 결과 인덱스는 동일합니다.

돌아가기

Indexes