MongoDB에서 createdCollectionAutomatically란 무엇인가?
MongoDB에서 인덱스를 생성할 때 대상 컬렉션(collection)이 아직 존재하지 않으면, MongoDB는 인덱스 생성 작업의 일부로 해당 컬렉션을 자동으로 만들어 줍니다. 이때 명령 결과에 포함되는 createdCollectionAutomatically 필드는 해당 작업이 컬렉션을 새로 생성했는지 여부를 알려주는 지표입니다.
값이 true라면 컬렉션이 없었기 때문에 작업 중에 새로 생성되었음을 의미하고, false라면 이미 존재하던 컬렉션에 대해 작업이 수행된 것입니다.
예제: 인덱스 생성 시 createdCollectionAutomatically 확인하기
먼저 존재하지 않는 컬렉션에 인덱스를 생성해 보겠습니다.
> db.createCollectionDemo.createIndex({"ClientCountryName":1});위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}출력 결과를 보면 createdCollectionAutomatically 값이 true로 표시됩니다. 이는 createCollectionDemo 컬렉션이 원래 존재하지 않았고, 인덱스 생성 작업 과정에서 MongoDB가 자동으로 컬렉션을 만들었다는 뜻입니다. 또한 numIndexesBefore가 1(기본 _id 인덱스)이고 numIndexesAfter가 2이므로, 새로운 인덱스 하나가 추가되었음을 확인할 수 있습니다.
문서 삽입 후 데이터 조회하기
이제 생성된 컬렉션에 문서(document)를 하나 삽입해 보겠습니다.
> db.createCollectionDemo.insertOne({"ClientName":"Larry","ClientCountryName":"US"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd2950be3526dbddbbfb612")
}삽입이 정상적으로 처리되었으므로, find() 메서드를 사용해 컬렉션의 모든 문서를 조회해 보겠습니다.
> db.createCollectionDemo.find().pretty();
실행 결과는 다음과 같습니다.
{
"_id" : ObjectId("5cd2950be3526dbddbbfb612"),
"ClientName" : "Larry",
"ClientCountryName" : "US"
}정리
createdCollectionAutomatically 필드는 MongoDB의 암묵적 컬렉션 생성(implicit collection creation) 동작을 이해하는 데 유용한 정보입니다. 컬렉션을 미리 만들지 않고도 인덱스 생성이나 문서 삽입 시 자동으로 컬렉션이 만들어지며, 이 필드를 통해 그 사실을 명확히 파악할 수 있습니다. 특히 운영 환경에서 실수로 잘못된 이름의 컬렉션이 자동 생성되는 상황을 진단할 때도 도움이 됩니다.