오늘은 MongoDB 대량 삽입을 살펴보겠습니다. MongoDB에서는 대량 삽입 작업을 사용하여 한 번에 여러 문서를 삽입할 수 있으며, 이 때 insert 메서드의 매개변수로 문서 배열을 전달합니다.
MongoDB 대량 삽입
MongoDB 대량 삽입은 기본적으로 순서대로 삽입을 수행합니다. 특정 지점에서 삽입 중 오류가 발생하면 나머지 문서에 대한 삽입은 수행되지 않습니다. 명령줄을 통해 MongoDB 대량 삽입을 사용하여 여러 문서를 삽입하는 예제를 살펴보겠습니다.
MongoDB 여러 문서 삽입
> db.car.insert(
... [
... { _id:1,name:"Audi",color:"Red",cno:"H101",mfdcountry:"Germany",speed:75 },
... { _id:2,name:"Swift",color:"Black",cno:"H102",mfdcountry:"Italy",speed:60 },
... { _id:3,name:"Maruthi800",color:"Blue",cno:"H103",mfdcountry:"India",speed:70 },
... { _id:4,name:"Polo",color:"White",cno:"H104",mfdcountry:"Japan",speed:65 },
... { _id:5,name:"Volkswagen",color:"JetBlue",cno:"H105",mfdcountry:"Rome",speed:80 }
... ]
... )
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 5,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
이 작업은 다섯 개의 문서를 삽입했습니다. 사용자가 쿼리에서 지정하지 않은 경우 MongoDB는 자동으로 id 필드를 생성합니다. “nInserted” 열은 삽입된 문서 수를 사용자에게 알려줍니다. 삽입된 문서를 확인하려면 다음과 같은 쿼리를 실행하십시오.
> db.car.find()
{ "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 }
{ "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 }
{ "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "India", "speed" : 70 }
{ "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 }
{ "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 }
>
MongoDB find 및 MongoDB insert 작업에 대해 자세히 알아보세요. 삽입 시에는 쿼리에서 모든 필드를 제공하는 것이 필수적이지 않습니다. 이제 일부 필드가 지정되지 않은 경우 삽입 작업이 어떻게 수행되는지 살펴보겠습니다.
MongoDB Bulk Insert 문서에 일부 필드 지정
> db.car.insert(
... [
... { _id:6,name:"HondaCity",color:"Grey",cno:"H106",mfdcountry:"Sweden",speed:45 },
... {name:"Santro",color:"Pale Blue",cno:"H107",mfdcountry:"Denmark",speed:55 },
... { _id:8,name:"Zen",speed:54 }
... ]
... )
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
>
이 예에서 두 번째 문서의 경우 사용자가 id 필드를 지정하지 않았으며 세 번째 문서의 경우 쿼리에는 id, name 및 speed 필드만 제공됩니다. 몇 가지 필드가 두 번째 및 세 번째 문서에서 누락되었지만 쿼리는 성공적으로 삽입됩니다. nInserted 열은 세 개의 문서가 삽입되었음을 나타냅니다. find 메서드를 호출하고 삽입된 문서를 확인하세요.
> db.car.find()
{ "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 }
{ "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 }
{ "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "India", "speed" : 70 }
{ "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 }
{ "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 }
{ "_id" : 6, "name" : "HondaCity", "color" : "Grey", "cno" : "H106", "mfdcountry" : "Sweden", "speed" : 45 }
{ "_id" : ObjectId("54885b8e61307aec89441a0b"), "name" : "Santro", "color" : "Pale Blue", "cno" : "H107", "mfdcountry" : "Denmark", "speed" : 55 }
{ "_id" : 8, "name" : "Zen", "speed" : 54 }
>
“Santro” 자동차의 id는 MongoDB에서 자동으로 생성됩니다. id 8의 경우 name 및 speed 필드만 삽입됩니다.
정렬되지 않은 문서 삽입
정렬되지 않은 삽입을 수행하는 동안 특정 지점에서 오류가 발생하면 mongodb는 배열의 나머지 문서를 계속 삽입합니다. 예를 들어;
> db.car.insert(
... [
... { _id:9,name:"SwiftDezire",color:"Maroon",cno:"H108",mfdcountry:"New York",speed:40 },
... { name:"Punto",color:"Wine Red",cno:"H109",mfdcountry:"Paris",speed:45 },
... ],
... { ordered: false }
... )
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
>
삽입 쿼리에서 ordered false가 지정되어 정렬되지 않은 컬렉션임을 나타냅니다. db.car.find()를 실행하세요.
{ "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 }
{ "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 }
{ "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "India", "speed" : 70 }
{ "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 }
{ "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 }
{ "_id" : 6, "name" : "HondaCity", "color" : "Grey", "cno" : "H106", "mfdcountry" : "Sweden", "speed" : 45 }
{ "_id" : ObjectId("54746407d785e3a05a1808a6"), "name" : "Santro", "color" : "Pale Blue", "cno" : "H107", "mfdcountry" : "Denmark", "speed" : 55 }
{ "_id" : 8, "name" : "Zen", "speed" : 54 }
{ "_id" : 9, "name" : "SwiftDezire", "color" : "Maroon", "cno" : "H108", "mfdcountry" : "New York", "speed" : 40 }
{ "_id" : ObjectId("5474642dd785e3a05a1808a7"), "name" : "Punto", "color" : "Wine Red", "cno" : "H109", "mfdcountry" : "Paris", "speed" : 45 }
문서가 삽입되고 볼 수 있듯이 정렬되지 않은 삽입입니다. 삽입 방법이 오류를 만나면 결과에는 “WriteResult.writeErrors” 필드가 포함되어 실패 원인을 나타냅니다.
중복 id 값 삽입
> db.car.insert({_id:6,name:"Innova"})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: journaldev.car.$_id_ dup key: { : 6.0 }"
}
})
>
이 오류는 우리가 이미 문서를 포함한 id 6에 문서를 삽입하려고 하기 때문에 발생하며 따라서 값 6의 중복 키 오류가 발생합니다.
MongoDB Bulk.insert() 메서드
이 메서드는 대량의 숫자로 삽입 작업을 수행합니다. 2.6 버전 이상에서 소개되었습니다. 구문은 Bulk.insert(<document>)
입니다. 문서: 삽입할 문서를 지정합니다. 이제 대량 삽입에 대한 예제를 살펴보겠습니다.
Bulk Unordered 삽입
> var carbulk = db.car.initializeUnorderedBulkOp();
> carbulk.insert({ name:"Ritz", color:"Grey",cno:"H109",mfdcountry:"Mexico",speed:62});
> carbulk.insert({ name:"Versa", color:"Magenta",cno:"H110",mfdcountry:"France",speed:68});
> carbulk.insert({ name:"Innova", color:"JetRed",cno:"H111",mfdcountry:"Dubai",speed:72});
> carbulk.execute();
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
>
carbulk라는 순서 없는 목록이 생성되고 필드, 삽입할 값이 지정된 삽입 쿼리입니다. 데이터가 실제로 데이터베이스에 삽입되도록 마지막 삽입 문 다음에 execute() 메서드를 호출하는 것이 필요합니다.
MongoDB 벌크 순서대로 삽입
이는 순서 없는 벌크 삽입과 유사하지만 initializeOrderedBulkOp
호출을 사용합니다.
>var car1bulk = db.car.initializeOrderedBulkOp();
>car1bulk.insert({ name:"Ertiga", color:"Red",cno:"H112",mfdcountry:"America",speed:65});
>car1bulk.insert({ name:"Quanta", color:"Maroon",cno:"H113",mfdcountry:"Rome",speed:78});
>car1bulk.execute();
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
먼저 carbulk1이라는 차 컬렉션의 순서가 있는 목록을 생성하고 execute() 메서드를 호출하여 문서를 삽입합니다.
MongoDB 벌크 삽입 Java 프로그램
이제까지 쉘 명령을 사용하여 본 다양한 벌크 작업에 대한 Java 프로그램을 살펴보겠습니다. 아래는 MongoDB Java 드라이버 버전 2.x를 사용한 벌크 삽입에 대한 Java 프로그램입니다.
package com.journaldev.mongodb;
import com.mongodb.BasicDBObject;
import com.mongodb.BulkWriteOperation;
import com.mongodb.BulkWriteResult;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
public class MongoDBBulkInsert {
//모든 문서를 삽입하는 방법의 메서드
public static void insertmultipledocs() throws UnknownHostException{
//실행 중인 것으로 가정하고 db에 대한 새로운 연결 가져오기
MongoClient mongoClient = new MongoClient("localhost");
////데이터베이스로 테스트를 사용하고 여기에 데이터베이스 사용
DB db=mongoClient.getDB("test");
////컬렉션 개체 검색, 여기에 차가 사용됨, 여러분의 것 사용
DBCollection coll = db.getCollection("car");
//새 객체 생성
DBObject d1 = new BasicDBObject();
//객체 d1의 데이터
d1.put("_id", 11);
d1.put("name","WagonR");
d1.put("color", "MetallicSilver");
d1.put("cno", "H141");
d1.put("mfdcountry","Australia");
d1.put("speed",66);
DBObject d2 = new BasicDBObject();
//객체 d2의 데이터
d2.put("_id", 12);
d2.put("name","Xylo");
d2.put("color", "JetBlue");
d2.put("cno", "H142");
d2.put("mfdcountry","Europe");
d2.put("speed",69);
DBObject d3 = new BasicDBObject();
//객체 d3의 데이터
d3.put("_id", 13);
d3.put("name","Alto800");
d3.put("color", "JetGrey");
d3.put("cno", "H143");
d3.put("mfdcountry","Austria");
d3.put("speed",74);
//새 목록 생성
List docs = new ArrayList<>();
//목록 docs에 d1, d2 및 d3 추가
docs.add(d1);
docs.add(d2);
docs.add(d3);
//목록 docs를 컬렉션에 삽입
coll.insert(docs);
//결과를 커서에 저장
DBCursor carmuldocs = coll.find();
//커서 내용 출력
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
//일부 필드가 있는 문서를 삽입하는 방법의 메서드
public static void insertsomefieldsformultipledocs() throws UnknownHostException{
//실행 중인 것으로 가정하고 db에 대한 새로운 연결 가져오기
MongoClient mongoClient = new MongoClient("localhost");
////데이터베이스로 테스트를 사용하고 여기에 데이터베이스 사용
DB db=mongoClient.getDB("test");
////컬렉션 개체 검색, 여기에 차가 사용됨, 여러분의 것 사용
DBCollection coll = db.getCollection("car");
//객체 d1 생성
DBObject d1 = new BasicDBObject();
//이름, 색상 및 속도에 대한 데이터 삽입
d1.put("name","Indica");
d1.put("color", "Silver");
d1.put("cno", "H154");
DBObject d2 = new BasicDBObject();
//id, 이름 및 속도에 대한 데이터 삽입
d2.put("_id", 43);
d2.put("name","Astar");
d2.put("speed",79);
List docs = new ArrayList<>();
docs.add(d1);
docs.add(d2);
coll.insert(docs);
DBCursor carmuldocs = coll.find();
System.out.println("-----------------------------------------------");
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
//중복 문서를 확인하는 방법의 메서드
public static void insertduplicatedocs() throws UnknownHostException{
//실행 중인 것으로 가정하고 db에 대한 새로운 연결 가져오기
MongoClient mongoClient = new MongoClient("localhost");
////데이터베이스로 테스트를 사용하고 여기에 데이터베이스 사용
DB db=mongoClient.getDB("test");
////컬렉션 개체 검색, 여기에 차가 사용됨, 여러분의 것 사용
DBCollection coll = db.getCollection("car");
DBObject d1 = new BasicDBObject();
//id11의 중복 데이터 삽입
d1.put("_id", 11);
d1.put("name","WagonR-Lxi");
coll.insert(d1);
DBCursor carmuldocs = coll.find();
System.out.println("-----------------------------------------------");
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
//순서가 없는 대량 목록을 수행하는 방법의 메서드
public static void insertbulkunordereddocs() throws UnknownHostException{
//실행 중인 것으로 가정하고 db에 대한 새로운 연결 가져오기
MongoClient mongoClient = new MongoClient("localhost");
////데이터베이스로 테스트를 사용하고 여기에 데이터베이스 사용
DB db=mongoClient.getDB("test");
////컬렉션 개체 검색, 여기에 차가 사용됨, 여러분의 것 사용
DBCollection coll = db.getCollection("car");
DBObject d1 = new BasicDBObject();
d1.put("name","Suzuki S-4");
d1.put("color", "Yellow");
d1.put("cno", "H167");
d1.put("mfdcountry","Italy");
d1.put("speed",54);
DBObject d2 = new BasicDBObject();
d2.put("name","Santro-Xing");
d2.put("color", "Cyan");
d2.put("cno", "H164");
d2.put("mfdcountry","Holand");
d2.put("speed",76);
//초기화 및 순서가 없는 대량 생성
BulkWriteOperation b1 = coll.initializeUnorderedBulkOperation();
//b1에 d1 및 d2를 삽입
b1.insert(d1);
b1.insert(d2);
//대량 실행
BulkWriteResult r1 = b1.execute();
DBCursor carmuldocs = coll.find();
System.out.println("-----------------------------------------------");
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
//순서가 있는 대량 삽입을 수행하는 방법의 메서드
public static void insertbulkordereddocs() throws UnknownHostException{
//실행 중인 것으로 가정하고 db에 대한 새로운 연결 가져오기
MongoClient mongoClient = new MongoClient("localhost");
////데이터베이스로 테스트를 사용하고 여기에 데이터베이스 사용
DB db=mongoClient.getDB("test");
////컬렉션 개체 검색, 여기에 차가 사용됨, 여러분의 것 사용
DBCollection coll = db.getCollection("car");
DBObject d1 = new BasicDBObject();
d1.put("name","Palio");
d1.put("color", "Purple");
d1.put("cno", "H183");
d1.put("mfdcountry","Venice");
d1.put("speed",82);
DBObject d2 = new BasicDBObject();
d2.put("name","Micra");
d2.put("color", "Lime");
d2.put("cno", "H186");
d2.put("mfdcountry","Ethopia");
d2.put("speed",84);
//순서가 있는 대량 초기화 및 생성
BulkWriteOperation b1 = coll.initializeOrderedBulkOperation();
b1.insert(d1);
b1.insert(d2);
//실행 호출
BulkWriteResult r1 = b1.execute();
DBCursor carmuldocs = coll.find();
System.out.println("-----------------------------------");
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
public static void main(String[] args) throws UnknownHostException{
//삽입 작업 수행을 위해 모든 메서드 호출
insertmultipledocs();
insertsomefieldsformultipledocs();
insertbulkunordereddocs();
insertbulkordereddocs();
insertduplicatedocs();
}
}
아래는 위 프로그램의 출력입니다.
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
-----------------------------------------------
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"}
{ "_id" : 43 , "name" : "Astar" , "speed" : 79}
-----------------------------------------------
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"}
{ "_id" : 43 , "name" : "Astar" , "speed" : 79}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d8"} , "name" : "Suzuki S-4" , "color" : "Yellow" , "cno" : "H167" , "mfdcountry" : "Italy" , "speed" : 54}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d9"} , "name" : "Santro-Xing" , "color" : "Cyan" , "cno" : "H164" , "mfdcountry" : "Holand" , "speed" : 76}
-----------------------------------
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"}
{ "_id" : 43 , "name" : "Astar" , "speed" : 79}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d8"} , "name" : "Suzuki S-4" , "color" : "Yellow" , "cno" : "H167" , "mfdcountry" : "Italy" , "speed" : 54}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d9"} , "name" : "Santro-Xing" , "color" : "Cyan" , "cno" : "H164" , "mfdcountry" : "Holand" , "speed" : 76}
{ "_id" : { "$oid" : "548860e803649b8efac5a1da"} , "name" : "Palio" , "color" : "Purple" , "cno" : "H183" , "mfdcountry" : "Venice" , "speed" : 82}
{ "_id" : { "$oid" : "548860e803649b8efac5a1db"} , "name" : "Micra" , "color" : "Lime" , "cno" : "H186" , "mfdcountry" : "Ethopia" , "speed" : 84}
Exception in thread "main" com.mongodb.MongoException$DuplicateKey: { "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.car.$_id_ dup key: { : 11 }" , "code" : 11000}
at com.mongodb.CommandResult.getWriteException(CommandResult.java:88)
at com.mongodb.CommandResult.getException(CommandResult.java:79)
at com.mongodb.DBCollectionImpl.translateBulkWriteException(DBCollectionImpl.java:314)
at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:189)
at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:165)
at com.mongodb.DBCollection.insert(DBCollection.java:93)
at com.mongodb.DBCollection.insert(DBCollection.java:78)
at com.mongodb.DBCollection.insert(DBCollection.java:120)
at com.journaldev.mongodb.MongoDBBulkInsert.insertduplicatedocs(MongoDBBulkInsert.java:163)
at com.journaldev.mongodb.MongoDBBulkInsert.main(MongoDBBulkInsert.java:304)
만약 MongoDB 자바 드라이버 3.x를 사용 중이라면 아래 프로그램을 사용하십시오.
package com.journaldev.mongodb.main;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class MongoDBBulkInsert {
public static void main(String[] args) throws UnknownHostException {
// 모든 메서드를 호출하여 삽입 작업 수행
insertmultipledocs();
insertsomefieldsformultipledocs();
insertduplicatedocs();
}
// 모든 문서를 삽입하는 메서드
public static void insertmultipledocs() throws UnknownHostException {
// 실행 중인 것으로 가정하고 db에 대한 새로운 연결 가져오기
MongoClient mongoClient = new MongoClient("localhost");
//// 여기에 데이터베이스로 테스트를 사용합니다. 여기에 데이터베이스를 사용하십시오.
MongoDatabase db = mongoClient.getDatabase("test");
//// 여기에 차가 사용되는 컬렉션 객체를 가져옵니다. 자신의 것을 사용하십시오.
MongoCollection coll = db.getCollection("car");
// 새로운 객체 생성
Document d1 = new Document();
// 객체 d1에 대한 데이터
d1.put("_id", 11);
d1.put("name", "WagonR");
d1.put("color", "MetallicSilver");
d1.put("cno", "H141");
d1.put("mfdcountry", "Australia");
d1.put("speed", 66);
Document d2 = new Document();
// 객체 d2에 대한 데이터
d2.put("_id", 12);
d2.put("name", "Xylo");
d2.put("color", "JetBlue");
d2.put("cno", "H142");
d2.put("mfdcountry", "Europe");
d2.put("speed", 69);
Document d3 = new Document();
// 객체 d3에 대한 데이터
d3.put("_id", 13);
d3.put("name", "Alto800");
d3.put("color", "JetGrey");
d3.put("cno", "H143");
d3.put("mfdcountry", "Austria");
d3.put("speed", 74);
// 새로운 목록 생성
List docs = new ArrayList<>();
// 목록 docs에 d1, d2 및 d3 추가
docs.add(d1);
docs.add(d2);
docs.add(d3);
// 목록 docs를 컬렉션에 삽입
coll.insertMany(docs);
// 결과를 커서에 저장
FindIterable carmuldocs = coll.find();
for (Document d : carmuldocs)
System.out.println(d);
mongoClient.close();
}
// 일부 필드가 있는 문서를 삽입하는 메서드
public static void insertsomefieldsformultipledocs() throws UnknownHostException {
// 실행 중인 것으로 가정하고 db에 대한 새로운 연결 가져오기
MongoClient mongoClient = new MongoClient("localhost");
//// 여기에 데이터베이스로 테스트를 사용합니다. 여기에 데이터베이스를 사용하십시오.
MongoDatabase db = mongoClient.getDatabase("test");
//// 여기에 차가 사용되는 컬렉션 객체를 가져옵니다. 자신의 것을 사용하십시오.
MongoCollection coll = db.getCollection("car");
// 객체 d1 생성
Document d1 = new Document();
// 이름, 색상 및 속도에 대한 데이터 삽입
d1.put("name", "Indica");
d1.put("color", "Silver");
d1.put("cno", "H154");
Document d2 = new Document();
// id, 이름 및 속도에 대한 데이터 삽입
d2.put("_id", 43);
d2.put("name", "Astar");
d2.put("speed", 79);
List docs = new ArrayList<>();
docs.add(d1);
docs.add(d2);
coll.insertMany(docs);
FindIterable carmuldocs = coll.find();
System.out.println("-----------------------------------------------");
for (Document d : carmuldocs)
System.out.println(d);
mongoClient.close();
}
// 중복 문서를 확인하는 메서드
public static void insertduplicatedocs() throws UnknownHostException {
// 실행 중인 것으로 가정하고 db에 대한 새로운 연결 가져오기
MongoClient mongoClient = new MongoClient("localhost");
//// 여기에 데이터베이스로 테스트를 사용합니다. 여기에 데이터베이스를 사용하십시오.
MongoDatabase db = mongoClient.getDatabase("test");
//// 여기에 차가 사용되는 컬렉션 객체를 가져옵니다. 자신의 것을 사용하십시오.
MongoCollection coll = db.getCollection("car");
Document d1 = new Document();
// id11의 중복 데이터 삽입
d1.put("_id", 11);
d1.put("name", "WagonR-Lxi");
coll.insertOne(d1);
FindIterable carmuldocs = coll.find();
System.out.println("-----------------------------------------------");
for (Document d : carmuldocs)
System.out.println(d);
mongoClient.close();
}
}
아래 이미지는 위의 몽고디비 대량 삽입 자바 프로그램의 샘플 실행을 보여줍니다. 몽고 셸과 자바 드라이버를 사용한 몽고디비 대량 삽입에 대한 모든 내용은 여기까지입니다. 앞으로의 포스트에서 더 많은 몽고디비 작업을 살펴볼 것입니다.
Source:
https://www.digitalocean.com/community/tutorials/mongodb-bulk-insert-insertmany