Java를 통해 MongoDB에 여러 문서를 한 번에 삽입하는 방법
나는 내 애플리케이션에서 MongoDB를 사용하고 있으며 MongoDB 컬렉션 내에 여러 문서를 삽입해야 했습니다.제가 사용하고 있는 버전은 1.6입니다.
여기서 예를 봤습니다.
http://docs.mongodb.org/manual/core/create/
에서
여러 문서 대량 삽입 섹션
작성자가 이 작업을 수행하기 위해 배열을 전달하는 위치.
동일하게 시도했을 때, 그런데 왜 허용되지 않는지, 그리고 여러 개의 문서를 동시에 삽입하는 방법을 알려주세요.
package com;
import java.util.Date;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.MongoClient;
public class App {
public static void main(String[] args) {
try {
MongoClient mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("at");
DBCollection collection = db.getCollection("people");
/*
* BasicDBObject document = new BasicDBObject();
* document.put("name", "mkyong"); document.put("age", 30);
* document.put("createdDate", new Date()); table.insert(document);
*/
String[] myStringArray = new String[] { "a", "b", "c" };
collection.insert(myStringArray); // Compilation error at this line saying that "The method insert(DBObject...) in the type DBCollection is not applicable for the arguments (String[])"
} catch (Exception e) {
e.printStackTrace();
}
}
}
자바를 통해 한 번에 여러 개의 문서를 삽입할 수 있는 방법을 알려주시기 바랍니다.
DBCollection.insert
형식 매개 변수를 사용할 수 있습니다.DBObject
,List<DBObject>
또는 일련의DBObject
여러 문서를 한 번에 삽입할 수 있습니다.문자열 배열을 전달하고 있습니다.
문서를 수동으로 채워야 합니다.DBObject
, 그것들을 a에 삽입합니다.List<DBObject>
또는 일련의DBObject
결국에는insert
그들.
DBObject document1 = new BasicDBObject();
document1.put("name", "Kiran");
document1.put("age", 20);
DBObject document2 = new BasicDBObject();
document2.put("name", "John");
List<DBObject> documents = new ArrayList<>();
documents.add(document1);
documents.add(document2);
collection.insert(documents);
위의 스니펫은 MongoDB 셸에서 실행하는 명령과 본질적으로 동일합니다.
db.people.insert( [ {name: "Kiran", age: 20}, {name: "John"} ]);
3.0 이전 버전에서는 Java에서 아래 코드를 사용할 수 있습니다.
DB db = mongoClient.getDB("yourDB");
DBCollection coll = db.getCollection("yourCollection");
BulkWriteOperation builder = coll.initializeUnorderedBulkOperation();
for(DBObject doc :yourList)
{
builder.insert(doc);
}
BulkWriteResult result = builder.execute();
return result.isAcknowledged();
만약 당신이 mongodb 버전 3.0을 사용하고 있다면, 당신은
MongoDatabase database = mongoClient.getDatabase("yourDB");
MongoCollection<Document> collection = database.getCollection("yourCollection");
collection.insertMany(yourDocumentList);
MongoDB 2.6 및 2.12 버전의 드라이버에서는 대량 삽입 작업도 수행할 수 있습니다.Java에서 대량 쓰기 작업을 사용할 수 있습니다.이를 사용하는 예는 다음과 같습니다.
DBCollection coll = db.getCollection("user");
BulkWriteOperation bulk = coll.initializeUnorderedBulkOperation();
bulk.find(new BasicDBObject("z", 1)).upsert().update(new BasicDBObject("$inc", new BasicDBObject("y", -1)));
bulk.find(new BasicDBObject("z", 1)).upsert().update(new BasicDBObject("$inc", new BasicDBObject("y", -1)));
bulk.execute();
문서 작성
MongoDB에서 문서를 작성하기 위한 두 가지 주요 명령이 있습니다.
insertOne()
insertMany()
다음과 같은 다른 방법도 있습니다.Update
명령을 실행합니다.우리는 이런 작전들을 업버스트라고 부릅니다.문서를 식별하는 데 사용된 선택기와 일치하는 문서가 없을 때 업버트가 발생합니다.
MongoDB는 자체적으로 ID를 삽입하지만, 다음과 같이 지정하여 사용자 정의 ID를 수동으로 삽입할 수 있습니다._id
의 매개 변수insert...()
기능들.
사용할 수 있는 여러 개의 문서insertMany()
문서 배열을 매개 변수로 사용합니다.실행 시 여러 개를 반환합니다.id
배열의 각 문서에 대한 s.컬렉션을 삭제하려면 다음을 사용합니다.drop()
지휘권때때로 대량 삽입을 수행할 때 중복 값을 삽입할 수 있습니다.특히, 만약 우리가 복제품을 삽입하려고 한다면,_id
s, 우리가 가져올게요.duplicate key error
:
db.startup.Insert Many([{_id:"id1", 이름:"Uber",{_id:"id2", 이름:"에어비앤비",{_id:"id1", 이름:"Uber",]);
MongoDB는 오류가 발생하면 삽입 작업을 중지하여 다음을 억제합니다. - 우리는 공급할 수 있습니다.ordered:false
매개 변수예:
db.startup.Insert Many([{_id:"id1", 이름:"Uber",{_id:"id2", 이름:"에어비앤비",{_id:"id1", 이름:"에어비앤비",],{ordered: false});
쿼리가 모든 소스 EG에서 폐기되는 MongoDB와 같은 삽입 레코드 형식입니다.
{
"_id" : 1,
"name" : a
}
{
"_id" : 2,
"name" : b,
}
mongodb 3.0입니다.
FindIterable<Document> resulutlist = collection.find(query);
List docList = new ArrayList();
for (Document document : resulutlist) {
docList.add(document);
}
if(!docList.isEmpty()){
collectionCube.insertMany(docList);
}
언급URL : https://stackoverflow.com/questions/18128490/how-to-insert-multiple-documents-at-once-in-mongodb-through-java
'programing' 카테고리의 다른 글
Mongodb 폴더에 대한 읽기/쓰기 권한 설정 (0) | 2023.06.27 |
---|---|
UIPageView 컨트롤러의 스와이프 제스처를 비활성화하려면 어떻게 해야 합니까? (0) | 2023.06.27 |
'+' 연산자를 사용하여 Oracle에서 FULL OUTER JOIN을 수행하는 방법은 무엇입니까? (0) | 2023.06.27 |
문자열 형식의 %s과 %d의 차이점은 무엇입니까? (0) | 2023.06.27 |
@ngrx/Store를 업그레이드할 때 '작업' 유형에 'payload' 속성이 없습니다. (0) | 2023.06.27 |