개요
MongoDB에서 반복적으로 데이터를 삽입해야 할 때는 for 루프와 save() 메서드를 함께 사용하면 매우 편리합니다. 이 글에서는 for 루프를 이용해 여러 개의 문서(document)를 컬렉션에 저장하고, 저장된 결과를 확인하는 전체 과정을 단계별로 살펴봅니다.
1단계: for 루프로 문서 생성하기
값을 저장하려면 save() 메서드와 for 루프를 조합하여 사용합니다. 아래 예제는 demo739 컬렉션에 동일한 내용의 문서 6개를 순차적으로 저장하는 코드입니다.
> for(var v=1; v<7; v++) {
... db.demo739.save({Name:"Chris",SubjectName:"MongoDB"});
... }
WriteResult({ "nInserted" : 1 })
루프가 한 번 실행될 때마다 Name이 "Chris", SubjectName이 "MongoDB"인 문서가 하나씩 삽입되며, 각 문서에는 MongoDB가 자동으로 고유한 ObjectId를 부여합니다.
2단계: find()로 저장된 문서 확인하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 손쉽게 조회할 수 있습니다.
> db.demo739.find();
위 명령을 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
{ "_id" : ObjectId("5ead6e7857bb72a10bcf0666"), "Name" : "Chris", "SubjectName" : "MongoDB" }
{ "_id" : ObjectId("5ead6e7857bb72a10bcf0667"), "Name" : "Chris", "SubjectName" : "MongoDB" }
{ "_id" : ObjectId("5ead6e7857bb72a10bcf0668"), "Name" : "Chris", "SubjectName" : "MongoDB" }
{ "_id" : ObjectId("5ead6e7857bb72a10bcf0669"), "Name" : "Chris", "SubjectName" : "MongoDB" }
{ "_id" : ObjectId("5ead6e7857bb72a10bcf066a"), "Name" : "Chris", "SubjectName" : "MongoDB" }
{ "_id" : ObjectId("5ead6e7857bb72a10bcf066b"), "Name" : "Chris", "SubjectName" : "MongoDB" }
출력 결과에서 볼 수 있듯이 총 6개의 문서가 성공적으로 저장되었으며, 각 문서는 서로 다른 _id(ObjectId) 값을 가지고 있습니다.
참고 사항
save() 메서드는 MongoDB 4.2부터 공식적으로 지원 중단(deprecated)되었습니다. 따라서 최신 버전의 MongoDB를 사용한다면 insertOne() 또는 insertMany() 메서드를 사용하는 것이 좋습니다. 특히 대량의 데이터를 한 번에 삽입할 경우 insertMany()가 네트워크 왕복 횟수를 줄여주기 때문에 성능 면에서 훨씬 유리합니다.