MongoDB 인덱스 삭제 개요
MongoDB에서 특정 인덱스를 삭제하려면 dropIndex() 메서드를 사용해야 합니다. 셸 환경에서는 다음과 같은 형식으로 호출합니다.
기본 문법
db.COLLECTION_NAME.dropIndex({KEY:1})Java 드라이버에서도 동일하게 dropIndex() 메서드를 사용해 인덱스를 삭제할 수 있습니다. 이 메서드에는 인덱스의 정렬 방식(오름차순 또는 내림차순)과 해당 인덱스가 생성된 필드의 이름을 매개변수로 전달해야 합니다.
dropIndex(Indexes.ascending("name"));예제 코드
아래 예제에서는 sampleCollection 컬렉션에 age 필드와 name 필드에 각각 오름차순 인덱스를 생성한 뒤, 그중 name 인덱스를 삭제하고 삭제 전후의 인덱스 목록을 확인합니다.
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 DroppingIndex {
public static void main(String args[]) {
// MongoDB 클라이언트 생성
MongoClient mongo = new MongoClient("localhost", 27017);
// 데이터베이스 접근
MongoDatabase database = mongo.getDatabase("myDatabase");
// 컬렉션 생성
database.createCollection("sampleCollection");
// 인덱스를 생성할 컬렉션 가져오기
MongoCollection coll = database.getCollection("sampleCollection");
// 인덱스 생성
coll.createIndex(Indexes.ascending("age"));
coll.createIndex(Indexes.ascending("name"));
System.out.println("인덱스 목록:");
for (Document index : coll.listIndexes()) {
System.out.println(index.toJson());
}
// 인덱스 삭제
coll = database.getCollection("sampleCollection");
coll.dropIndex(Indexes.ascending("name"));
System.out.println("인덱스 삭제 후 목록:");
for (Document index : coll.listIndexes()) {
System.out.println(index.toJson());
}
}
}실행 결과
인덱스 목록:
{"v": 2, "key": {"_id": 1}, "name": "_id_", "ns": "myDatabase.sampleCollection"}
{"v": 2, "key": {"age": 1}, "name": "age_1", "ns": "myDatabase.sampleCollection"}
{"v": 2, "key": {"name": 1}, "name": "name_1", "ns": "myDatabase.sampleCollection"}
인덱스 삭제 후 목록:
{"v": 2, "key": {"_id": 1}, "name": "_id_", "ns": "myDatabase.sampleCollection"}
{"v": 2, "key": {"age": 1}, "name": "age_1", "ns": "myDatabase.sampleCollection"}참고 사항
- _id 인덱스는 삭제할 수 없습니다. MongoDB가 자동으로 생성하는 기본 인덱스이므로 위 실행 결과에서도 삭제 후에도 계속 남아 있는 것을 확인할 수 있습니다.
- 컬렉션의 모든 인덱스를 한 번에 삭제하려면
dropIndexes()메서드를 사용할 수 있습니다. - 최신 버전의 MongoDB Java 드라이버에서는
MongoClient생성자 대신 연결 문자열 방식(MongoClients.create("mongodb://localhost:27017"))을 권장합니다.