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

MongoDB에서 대량 삽입하기: insertMany() 메서드 활용법

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에 저장할 수 있습니다.