복붙노트

[MONGODB] 한 번 MongoDB의 자바를 통해 여러 문서를 삽입하는 방법

MONGODB

한 번 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();
        }

    }

}

제가 자바를 통해 한 번에 여러 문서를 삽입 할 수 있도록하는 방법이 무엇인지 알려 주시기 바랍니다.

해결법

  1. ==============================

    1.DBCollection.insert 형 DBOBJECT 목록 의 파라미터 또는 한번에 여러 문서를 삽입 DBObjects 배열을 수용한다. 당신은 문자열 배열을 전달하고 있습니다.

    DBCollection.insert 형 DBOBJECT 목록 의 파라미터 또는 한번에 여러 문서를 삽입 DBObjects 배열을 수용한다. 당신은 문자열 배열을 전달하고 있습니다.

    당신은 반드시 그들을 삽입 목록 또는 DBObjects의 배열 결국 그들을 삽입 수동으로 채워 문서 (DBObjects).을

    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"} ]);
    
  2. ==============================

    2.3.0 전에, 당신은 자바 코드 아래 사용할 수 있습니다

    3.0 전에, 당신은 자바 코드 아래 사용할 수 있습니다

    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);
    
  3. ==============================

    3.MongoDB를 2.6 드라이버 2.12 버전으로 당신은 또한 지금 작업을 삽입 일괄 작업을 수행 할 수 있습니다. 자바에서 당신은 BulkWriteOperation을 사용할 수 있습니다. 이 예제에 사용 될 수있다 :

    MongoDB를 2.6 드라이버 2.12 버전으로 당신은 또한 지금 작업을 삽입 일괄 작업을 수행 할 수 있습니다. 자바에서 당신은 BulkWriteOperation을 사용할 수 있습니다. 이 예제에 사용 될 수있다 :

    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();
    
  4. ==============================

    4.MongoDB의 문서를 만들기위한 두 가지 주요 명령이있어 :

    MongoDB의 문서를 만들기위한 두 가지 주요 명령이있어 :

    뿐만 아니라 이러한 업데이트 명령과 같은 다른 방법이있어. 우리는 upserts을 이러한 작업을 호출합니다. 문서를 식별하는 데 사용되는 셀렉터와 일치하는 문서를 거기 없을 때 Upserts가 발생합니다.

    그것으로 MongoDB를 삽입 ID가 자신의 비록, 우리는 수동으로 사용자 ID를 삽입뿐만 아니라 의한) (... 삽입의 기능을 _id 매개 변수를 지정 할 수 있습니다.

    매개 변수로 문서의 배열을 - 여러 문서를 삽입하려면 우리는 insertMany ()를 사용할 수 있습니다. 실행하면 배열의 각 문서에 대해 여러 개의 ID를 반환합니다. 수집, 사용 드롭 () 명령을 놓습니다. 대량 삽입을 할 때 때때로, - 우리는 중복 된 값을 삽입 할 수 있습니다. 우리는 중복 _ids를 삽입하려고하면 구체적으로, 우리는 중복 키 오류가 발생합니다 :

    
    db.startup.insertMany(
      [
      {_id:"id1", name:"Uber"},
      {_id:"id2", name:"Airbnb"},
      {_id:"id1", name:"Uber"},
      ]
      );
    

    잘못된 매개 변수를 우리가 주문 제공 할 수 있습니다 -이 있음이 표시되지 않도록 오류가 발생하면 MongoDB를이 작업을 삽입 중지합니다. 전의:

    
    db.startup.insertMany(
    [
    {_id:"id1", name:"Uber"},
    {_id:"id2", name:"Airbnb"},
    {_id:"id1", name:"Airbnb"},
    ],
    {ordered: false}
    );
    
  5. ==============================

    5.모든 소스에서 은퇴 쿼리하여 MongoDB에서처럼 삽입 레코드 형식 EG.

    모든 소스에서 은퇴 쿼리하여 MongoDB에서처럼 삽입 레코드 형식 EG.

     {
        "_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);
    }   
    
  6. from https://stackoverflow.com/questions/18128490/how-to-insert-multiple-documents-at-once-in-mongodb-through-java by cc-by-sa and MIT license