-
MongoDB. upsert multi개발 기록 2023. 5. 18. 01:58728x90
몽고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반응형'개발 기록' 카테고리의 다른 글
MySQL. 'Select tables optimized away' vs 'Using index' (0) 2023.06.30 MyBatis. BindingException: parameter '~~' not found (0) 2023.05.31 MySQL. random string(alphabet + number) (0) 2023.05.10 MSA - Spring Cloud Gateway (0) 2023.04.21 MSA - Spring Cloud Config server (0) 2023.04.11