개발 기록
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
반응형