개발 기록

MongoDB. upsert multi

neunggu 2023. 5. 18. 01:58
728x90

몽고DB에서 upsert를 한번에 여러개 하는 방법이다.

환경

spring boot 3.0.6

spring-boot-starter-data-mongodb 3.0.6

 

방법

MongoTemplate는  updateMulti는 제공하지만 upsert는 이와 관련된 기능이 없다.

하지만 BulkOperations을 이용하면 구현 가능하다.

public void example() {
    // mongoTemplate.bulkOps(BulkMode, "콜렉션이름")
    BulkOperations bulkOperations 
    	= mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, "movies");
    // 1번     
    Query query1 = new Query()
    	.addCriteria(Criteria.where("name").is("harry"));
    Update update1 = new Update().addToSet("favorites", "Albus Dumbledore");
    // 2번
    Query query2 = new Query()
    	.addCriteria(Criteria.where("name").is("potter"));
    Update update2 = new Update().addToSet("favorites", "Sirius Black");
    // 리스트에 추가
    List upsertPairs = List.of(
    	Pair.of(query1, update1),
        Pair.of(query2, update2));
    //실행
    bulkOperations.upsert(upsertPairs).execute();
}

 

728x90
반응형