문서 메뉴
문서 홈
/ / /
Java Reactive Streams 드라이버
/

인덱스 만들기

이 페이지의 내용

  • 전제 조건
  • MongoDB 배포에 연결하기
  • 오름차순 인덱스
  • 내림차순 인덱스
  • 복합 인덱스
  • 텍스트 인덱스
  • 해시 인덱스
  • 지리 공간적 인덱스
  • 인덱스 옵션
  • 컬렉션의 인덱스 목록 가져오기

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

Java Reactive Streams 드라이버는 다양한 MongoDB 인덱스 키 유형에 대한 인덱스 사양 문서를 생성하기 위한 정적 팩토리 메서드가 포함된 Indexes 클래스를 제공합니다. 인덱스 유형에 대해 자세히 알아보려면 MongoDB Server 매뉴얼에서 인덱스 를 참조하세요.

참고

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

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

import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoDatabase;
import com.mongodb.reactivestreams.client.MongoCollection;
import org.bson.Document;
import com.mongodb.client.model.Indexes;
import com.mongodb.client.model.IndexOptions;
import com.mongodb.client.model.Filters;

중요

이 가이드에서는 퀵 스타트 프라이머에 설명된 Subscriber 구현을 사용합니다.

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

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

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("restaurants");

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

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

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

collection.createIndex(Indexes.ascending("name"))
.subscribe(new PrintToStringSubscriber<String>());

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

collection.createIndex(Indexes.ascending("stars", "name"))
.subscribe(new PrintToStringSubscriber<String>());

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

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

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

collection.createIndex(Indexes.descending("stars"))
.subscribe(new PrintToStringSubscriber<String>());

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

collection.createIndex(Indexes.descending("stars", "name"))
.subscribe(new PrintToStringSubscriber<String>());

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

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

참고

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

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

collection.createIndex(
Indexes.compoundIndex(Indexes.descending("stars"),
Indexes.ascending("name"))
).subscribe(new PrintToStringSubscriber<String>());

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

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

collection.createIndex(Indexes.text("name"))
.subscribe(new PrintToStringSubscriber<String>());

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

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

collection.createIndex(Indexes.hashed("_id"))
.subscribe(new PrintToStringSubscriber<String>());

지리 공간적 쿼리를 지원하기 위해 MongoDB는 다양한 지리 공간적 인덱스를 지원합니다.

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

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

collection.createIndex(Indexes.geo2dsphere("contact.location"))
.subscribe(new PrintToStringSubscriber<String>());

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

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

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

import com.mongodb.client.model.IndexOptions;

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

IndexOptions indexOptions = new IndexOptions().unique(true);
collection.createIndex(Indexes.ascending("name", "stars"), indexOptions)
.subscribe(new PrintToStringSubscriber<String>());

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

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

IndexOptions partialFilterIndexOptions = new IndexOptions()
.partialFilterExpression(Filters.exists("contact.email"));
collection.createIndex(
Indexes.descending("name", "stars"), partialFilterIndexOptions)
.subscribe(new PrintToStringSubscriber<String>());

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

collection.listIndexes().subscribe(new PrintDocumentSubscriber());

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

돌아가기

데이터베이스 및 컬렉션

다음

읽기 작업