MongoDB에서 여러 개의 문서를 컬렉션에 한 번에 삽입해야 할 때는 insertMany() 메서드를 사용하는 것이 가장 효율적입니다. 개별적으로 insert()를 반복 호출하는 것보다 네트워크 왕복 횟수가 크게 줄어들어 전체적인 성능이 향상됩니다. 또한 삽입된 데이터를 자주 조회한다면 ensureIndex()를 활용해 적절한 인덱스를 생성함으로써 쿼리 성능까지 함께 최적화할 수 있습니다.
1. insertMany()로 여러 문서 한 번에 삽입하기
먼저 데모용 컬렉션을 만들고 여러 문서를 동시에 삽입해 보겠습니다.
> db.demo325.insertMany( [
... { _id: 101, Name: "Chris", Age: 23 },
... { _id: 102, Name: "David", Age: 24 },
... { _id: 103, Name: "Bob", Age: 22 }
... ] );
{ "acknowledged" : true, "insertedIds" : [ 101, 102, 103 ] }실행 결과 acknowledged: true와 함께 삽입된 문서들의 _id 목록이 반환됩니다.
2. find() 메서드로 삽입 결과 확인하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo325.find().pretty();
위 명령은 다음과 같은 출력을 생성합니다.
{ "_id" : 101, "Name" : "Chris", "Age" : 23 }
{ "_id" : 102, "Name" : "David", "Age" : 24 }
{ "_id" : 103, "Name" : "Bob", "Age" : 22 }3. ensureIndex()로 인덱스 생성하여 조회 성능 높이기
대량의 문서가 저장된 컬렉션에서 특정 필드로 자주 검색한다면, 해당 필드에 인덱스를 생성하는 것이 좋습니다. 여기서는 Name 필드에 오름차순 인덱스를 생성해 보겠습니다.
> db.demo325.ensureIndex({Name:1});실행 결과는 다음과 같습니다.
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}numIndexesAfter 값이 1에서 2로 증가한 것을 통해 새로운 인덱스가 정상적으로 추가되었음을 확인할 수 있습니다.
참고: 최신 버전에서는 createIndex() 사용 권장
ensureIndex()는 이전 버전의 메서드로, 현재는 더 이상 사용이 권장되지 않습니다(deprecated). MongoDB 3.0 이상 버전에서는 기능이 동일한 createIndex()를 사용하는 것이 좋습니다.
> db.demo325.createIndex({Name:1});정리
대량의 문서를 삽입할 때는 insertMany()로 일괄 처리하여 성능을 확보하고, 조회가 빈번한 필드에는 인덱스를 생성해 검색 속도를 높이는 것이 MongoDB 운영의 핵심입니다. 단, 인덱스가 많아지면 삽입·업데이트 시마다 인덱스 갱신 비용이 발생하므로, 실제 쿼리 패턴에 맞춰 필요한 인덱스만 선별적으로 생성하는 것이 중요합니다.