programing

Java를 통해 MongoDB에 여러 문서를 한 번에 삽입하는 방법

cafebook 2023. 6. 27. 23:39
반응형

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()지휘권때때로 대량 삽입을 수행할 때 중복 값을 삽입할 수 있습니다.특히, 만약 우리가 복제품을 삽입하려고 한다면,_ids, 우리가 가져올게요.duplicate key error:


db.startup.Insert Many([{_id:"id1", 이름:"Uber",{_id:"id2", 이름:"에어비앤비",{_id:"id1", 이름:"Uber",]);

MongoDB duplicate key error

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

반응형