Docs Menu
Docs Home
/ / /
Scala
/

생성 인덱스

이 페이지의 내용

  • 전제 조건
  • MongoDB 배포에 연결하기
  • 오름차순 인덱스
  • 단일 오름차순 인덱스
  • 복합 오름차순 인덱스
  • 내림차순 인덱스
  • 단일 내림차순 키 인덱스
  • 복합 내림차순 키 인덱스
  • 복합 인덱스
  • Text Indexes
  • 해시 인덱스
  • 지리 공간적 인덱스
  • 2dsphere
  • 인덱스 옵션
  • 고유 인덱스
  • 부분 인덱스
  • 컬렉션의 인덱스 목록 가져오기

인덱스는 MongoDB 에서 쿼리를 효율적으로 실행할 수 있도록 지원 합니다. 필드 에 인덱스 를 만들려면 MongoCollection.createIndex() 메서드에 인덱스 사양 문서 를 전달합니다.

운전자 Scala 는 다양한 인덱스 MongoDB 키 유형에 대한 인덱스 사양 문서를 생성하기 위한 정적 팩토리 메서드가 포함된 인덱스 클래스를 제공합니다. 인덱스 유형에 학습 보려면 서버 매뉴얼에서 인덱스 를 참조하세요.

참고

MongoDB 는 동일한 사양의 인덱스 가 아직 존재하지 않는 경우에만 인덱스 를 생성합니다.

이 가이드의 코드 예제를 실행하려면 프로그램에 다음 가져오기 문을 포함해야 합니다.

import org.mongodb.scala._
import org.mongodb.Indexes
import org.mongodb.IndexOptions
import org.mongodb.Filters

참고

이 가이드에서는 빠른 시작 입문서에 설명된 대로 Observable 암시를 사용합니다.

먼저 MongoDB deployment에 연결한 다음 MongoDatabaseMongoCollection 인스턴스를 선언하고 정의합니다.

다음 코드는 포트 27017localhost 에서 실행되는 독립형 MongoDB 배포서버에 연결합니다. 그런 다음 test 데이터베이스를 참조하는 database 변수와 restaurants 컬렉션을 참조하는 collection 변수를 정의합니다.

val mongoClient: MongoClient = MongoClient()
val database: MongoDatabase = mongoClient.getDatabase("test")
val collection: MongoCollection[Document] = database.getCollection("restaurants")

MongoDB deployment에 연결하는 방법에 대해 자세히 알아보려면 MongoDB에 연결 튜토리얼을 참조하세요.

오름차순 인덱스 에 대한 사양을 만들려면 Indexes.ascending() 정적 헬퍼 메서드를 사용합니다.

다음 예에서는 name 필드에 오름차순 인덱스를 생성합니다.

collection.createIndex(Indexes.ascending("name"))
.printResults()

다음 예에서는 stars 필드와 name 필드에 오름차순 복합 인덱스를 생성합니다.

collection.createIndex(Indexes.ascending("stars", "name"))
.printResults()

복합 인덱스 를 만드는 다른 방법을 보려면 복합 인덱스 섹션을 참조하세요.

내림차순 인덱스 사양을 만들려면 Indexes.descending() 정적 헬퍼 메서드를 사용합니다.

다음 예에서는 stars 필드에 내림차순 인덱스를 생성합니다.

collection.createIndex(Indexes.descending("stars"))
.printResults()

다음 예에서는 stars 필드와 name 필드에 내림차순 복합 인덱스를 생성합니다.

collection.createIndex(Indexes.descending("stars", "name"))
.printResults()

복합 인덱스 를 만드는 다른 방법을 보려면 복합 인덱스 섹션을 참조하세요.

복합 인덱스에 대한 사양을 만들려면 Indexes.compoundIndex() 정적 헬퍼 메서드를 사용합니다.

참고

모든 키가 오름차순인 복합 인덱스 에 대한 사양을 만들려면 ascending() 메서드를 사용할 수 있습니다. 모든 키가 내림차순인 복합 인덱스 에 대한 사양을 만들려면 descending() 메서드를 사용할 수 있습니다.

다음 예에서는 stars 필드에 내림차순으로 name 필드에 오름차순으로 복합 인덱스를 생성합니다.

collection.createIndex(
Indexes.compoundIndex(Indexes.descending("stars"),
Indexes.ascending("name")))
.printResults()

MongoDB 는 string 콘텐츠의 텍스트 Atlas Search를 지원하기 위해 텍스트 인덱스를 제공합니다. 텍스트 인덱스에는 값이 string 또는 string 요소의 배열인 모든 필드가 포함될 수 있습니다. 텍스트 인덱스에 대한 사양을 만들려면 Indexes.text() 헬퍼 메서드를 사용합니다.

다음 예시에서는 name 필드에 텍스트 인덱스를 생성합니다.

collection.createIndex(Indexes.text("name"))
.printResults()

텍스트 인덱스에 대해 자세히 알아보려면 서버 매뉴얼의 텍스트 인덱스를 참조하세요.

해시된 인덱스 인덱스에 대한 사양을 만들려면 Indexes.hashed() 정적 헬퍼 메서드를 사용합니다.

다음 예에서는 _id 필드에 해시 인덱스를 생성합니다.

collection.createIndex(Indexes.hashed("_id"))
.printResults()

해시된 인덱스에 학습 보려면 서버 매뉴얼의 해시 된 인덱스 를 참조하세요.

지리 공간적 쿼리를 지원 하기 위해 MongoDB 는 다양한 지리 공간적 인덱스를 지원합니다. 지리 공간적 인덱스에 학습 보려면 서버 매뉴얼의 지리 공간적 인덱스 를 참조하세요.

2dsphere 인덱스에 대한 사양을 만들려면 Indexes.geo2dsphere() 정적 헬퍼 메서드를 사용합니다.

다음 예시에서는 contact.location 필드에 2dsphere 인덱스를 생성합니다.

collection.createIndex(Indexes.geo2dsphere("contact.location"))
.printResults()

인덱스 사양 문서 외에도 createIndex() 메서드는 운전자 에 고유 인덱스 또는 부분 인덱스를 생성하도록 지시하는 인덱스 옵션 문서 를 사용할 수 있습니다.

드라이버는 다양한 인덱스 옵션을 지정하기 위해 IndexOptions 클래스를 제공합니다.

코드에 다음 가져오기 성명서 을 추가하여 IndexOptions 인스턴스 를 만듭니다.

import org.mongodb.scala.model.IndexOptions

다음 코드는 unique(true) 옵션을 지정하여 namestars 필드에 고유 인덱스 를 생성합니다.

val indexOptions = IndexOptions().unique(true)
collection.createIndex(Indexes.ascending("name", "stars"), indexOptions)
.printResults()

고유 인덱스에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 고유 인덱스 를 참조하세요.

부분 인덱스를 만들려면 partialFilterExpression 인덱스 옵션을 포함합니다.

다음 예에서는 status 필드의 값이 "A" 인 문서에 부분 인덱스를 생성합니다.

val partialFilterIndexOptions = IndexOptions()
.partialFilterExpression(Filters.exists("contact.email"))
collection.createIndex(
Indexes.descending("name", "stars"), partialFilterIndexOptions)
.printResults()

부분 인덱스에 학습 보려면 서버 매뉴얼의 부분 인덱스 를 참조하세요.

listIndexes() 메서드를 사용하여 인덱스 목록을 가져옵니다. 다음 코드는 컬렉션의 인덱스를 나열합니다.

collection.listIndexes().printResults()

다른 인덱스 옵션에 학습 보려면 서버 매뉴얼의 인덱스 속성 을 참조하세요.

돌아가기

데이터베이스 및 컬렉션