MongoDB에서 여러 개의 문서를 한 번에 컬렉션에 추가하려면 insertMany() 메서드를 사용하면 됩니다. insertMany()는 단일 작업으로 여러 문서를 컬렉션에 대량 삽입할 수 있어, 데이터를 효율적으로 처리할 때 매우 유용합니다.
insertMany()로 컬렉션 생성 및 문서 삽입
아래 예제는 은행 정보와 고객 정보를 담은 세 개의 문서를 demo729 컬렉션에 한 번에 삽입하는 코드입니다.
> db.demo729.insertMany( [
... { BankName:"HDFC Bank",cardType:"Credit","CustomerName":[{Name:"Chris",Age:25}]},
... { BankName:"ICICI Bank",cardType:"Debit","CustomerName":[{Name:"Bob",Age:22}]},
... { BankName:"Kotak Bank",cardType:"Debit","CustomerName":[{Name:"David",Age:23}]}
... ] );
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5eac510d56e85a39df5f6333"),
ObjectId("5eac510d56e85a39df5f6334"),
ObjectId("5eac510d56e85a39df5f6335")
]
}삽입이 성공하면 acknowledged: true와 함께 각 문서에 자동으로 할당된 _id(ObjectId) 목록이 반환됩니다.
find()로 삽입된 문서 확인하기
컬렉션에 저장된 모든 문서를 조회하려면 find() 메서드를 사용합니다. .pretty()를 함께 사용하면 결과가 보기 좋게 정렬되어 출력됩니다.
> db.demo729.find().pretty();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : ObjectId("5eac510d56e85a39df5f6333"),
"BankName" : "HDFC Bank",
"cardType" : "Credit",
"CustomerName" : [
{
"Name" : "Chris",
"Age" : 25
}
]
}
{
"_id" : ObjectId("5eac510d56e85a39df5f6334"),
"BankName" : "ICICI Bank",
"cardType" : "Debit",
"CustomerName" : [
{
"Name" : "Bob",
"Age" : 22
}
]
}
{
"_id" : ObjectId("5eac510d56e85a39df5f6335"),
"BankName" : "Kotak Bank",
"cardType" : "Debit",
"CustomerName" : [
{
"Name" : "David",
"Age" : 23
}
]
}insertMany() 사용 시 참고 사항
- 순차적 삽입: 기본적으로 insertMany()는 배열 순서대로 문서를 삽입하며, 중간에 오류가 발생하면 이후 문서의 삽입을 중단합니다.
- ordered 옵션:
{ ordered: false }옵션을 지정하면 오류가 발생해도 나머지 문서를 계속 삽입합니다. - 자동 _id 생성: _id 필드를 직접 지정하지 않으면 MongoDB가 각 문서에 고유한 ObjectId를 자동 생성합니다.
- 단일 컬렉션 전용: insertMany()는 하나의 컬렉션에만 문서를 삽입할 수 있습니다.
이처럼 insertMany()를 활용하면 반복적인 단일 삽입 작업 없이도 대량의 데이터를 빠르고 효율적으로 MongoDB에 저장할 수 있습니다.