Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java로 MongoDB에서 인덱스 생성하는 방법 완벽 가이드

MongoDB에서 인덱스를 생성하려면 createIndex() 메서드를 사용해야 합니다. 인덱스를 적절히 활용하면 대량의 데이터가 저장된 컬렉션에서도 쿼리 성능을 크게 향상시킬 수 있습니다.

기본 문법

MongoDB 셸에서 인덱스를 생성하는 기본 문법은 다음과 같습니다.

db.COLLECTION_NAME.createIndex({KEY:1})

여기서 KEY는 인덱스를 생성할 필드의 이름이며, 값 1은 오름차순(ascending)을 의미합니다. 내림차순(descending) 인덱스를 생성하려면 -1을 사용하면 됩니다.

Java에서 인덱스 생성하기

Java에서는 MongoDB 드라이버가 제공하는 createIndex() 메서드를 사용하여 인덱스를 생성할 수 있습니다. 이 메서드에는 인덱스의 정렬 방식(오름차순 또는 내림차순)과 인덱스를 생성할 필드 이름을 지정한 Indexes 객체를 전달합니다.

createIndex(Indexes.descending("name"));

예제 코드

다음은 Java 프로그램에서 MongoDB 컬렉션에 오름차순 인덱스를 생성하고, 생성된 인덱스 목록을 출력하는 전체 예제입니다.

import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Indexes;
import org.bson.Document;
import com.mongodb.MongoClient;

public class CreatingIndex {
    public static void main(String args[]) {
        // MongoDB 클라이언트 생성
        MongoClient mongo = new MongoClient("localhost", 27017);
        
        // 데이터베이스 접근
        MongoDatabase database = mongo.getDatabase("myDatabase");
        
        // 컬렉션 생성
        database.createCollection("sampleCollection");
        
        // 인덱스를 생성할 컬렉션 가져오기
        MongoCollection<Document> coll = database.getCollection("sampleCollection");
        
        // 인덱스 생성
        coll.createIndex(Indexes.ascending("age"));
        System.out.println("인덱스가 성공적으로 생성되었습니다");
        
        // 컬렉션에 존재하는 인덱스 목록 출력
        for (Document index : coll.listIndexes()) {
            System.out.println(index.toJson());
        }
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다. 기본적으로 모든 컬렉션에는 _id 필드에 대한 고유 인덱스가 자동으로 생성되며, 여기에 새로 만든 age 오름차순 인덱스가 추가된 것을 확인할 수 있습니다.

Index created successfully
{"v": 2, "key": {"_id": 1}, "name": "_id_", "ns": "myDatabase.sampleCollection"}
{"v": 2, "key": {"age": 1}, "name": "age_1", "ns": "myDatabase.sampleCollection"}

핵심 정리

  • createIndex(): 컬렉션에 인덱스를 생성하는 메서드
  • Indexes.ascending(): 오름차순 인덱스를 생성할 때 사용
  • Indexes.descending(): 내림차순 인덱스를 생성할 때 사용
  • listIndexes(): 컬렉션에 등록된 인덱스 목록을 확인할 때 사용

쿼리에서 자주 조회되거나 정렬 조건으로 많이 사용되는 필드에 인덱스를 설정하면 데이터베이스 전반의 응답 속도를 효과적으로 개선할 수 있습니다.