복붙노트

[MONGODB] 봄 데이터 MongoDB를하고 대량 업데이트

MONGODB

봄 데이터 MongoDB를하고 대량 업데이트

나는 봄 데이터 MongoDB를 사용하고하고 하나가 여기에 설명 된 것처럼 대량 업데이트 수행하고 싶습니다 : http://docs.mongodb.org/manual/reference/method/Bulk.find.update/#Bulk.find.update를

일반 드라이버를 사용하는 경우는 다음과 같습니다 :

다음의 예는 () 작업이 항목 수집을 위해 빌더 벌크을 초기화하고, 작업 목록에 다양한 멀티 업데이트 작업을 추가합니다.

var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } );
bulk.find( { item: null } ).update( { $set: { item: "TBD" } } );
bulk.execute()

봄 데이터 MongoDB를 가진 유사한 결과를 얻을 수있는 방법이 있습니까?

해결법

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

    1.대량 업데이트는 스프링 데이터 MongoDB를의 1.9.0.RELEASE에서 지원됩니다. 다음은 샘플입니다 :

    대량 업데이트는 스프링 데이터 MongoDB를의 1.9.0.RELEASE에서 지원됩니다. 다음은 샘플입니다 :

    BulkOperations ops = template.bulkOps(BulkMode.UNORDERED, Match.class);
    for (User user : users) {
        Update update = new Update();
        ...
        ops.updateOne(query(where("id").is(user.getId())), update);
    }
    ops.execute();
    
  2. ==============================

    2.드라이버가 현재와 같이 당신은 이렇게 오래 사용할 수 있으며, 당신이 얘기하는 서버는 적어도 대량 작업에 필요 MongoDB를한다. 지금 바로 봄의 데이터에서 아무것도 (그리고 다른 높은 수준의 드라이버 추상화에 대한 거의 같은)이있다 생각하지만, 당신이 할 수 물론 액세스의 기본 드라이버 컬렉션 개체하지 않는 구현 대량의 API에 대한 액세스를 :

    드라이버가 현재와 같이 당신은 이렇게 오래 사용할 수 있으며, 당신이 얘기하는 서버는 적어도 대량 작업에 필요 MongoDB를한다. 지금 바로 봄의 데이터에서 아무것도 (그리고 다른 높은 수준의 드라이버 추상화에 대한 거의 같은)이있다 생각하지만, 당신이 할 수 물론 액세스의 기본 드라이버 컬렉션 개체하지 않는 구현 대량의 API에 대한 액세스를 :

        DBCollection collection = mongoOperation.getCollection("collection");
        BulkWriteOperation bulk = collection.initializeOrderedBulkOperation();
    
        bulk.find(new BasicDBObject("status","D"))
            .update(new BasicDBObject(
                new BasicDBObject(
                    "$set",new BasicDBObject(
                        "status", "I"
                    ).append(
                        "points", 0
                    )
                )
            ));
    
        bulk.find(new BasicDBObject("item",null))
            .update(new BasicDBObject(
                new BasicDBObject(
                    "$set", new BasicDBObject("item","TBD")
                )
            ));
    
    
        BulkWriteResult writeResult = bulk.execute();
        System.out.println(writeResult);
    

    당신이 중 하나를 정의하여 필요한 DBOBJECT 유형을 작성, 또는 모든 지원 그들이 구축하는 DBOBJECT "추출"해야 봄 몽고 라이브러리에 제공된 빌더를 사용할 수 있습니다.

  3. from https://stackoverflow.com/questions/26657055/spring-data-mongodb-and-bulk-update by cc-by-sa and MIT license