Spring Data Mongodb 批量操作示例

msa*_*eep 6 spring-data-mongodb

有人可以给我一个完整的Spring Data Mongodb DB批量操作示例。

我正在尝试使用 spring 数据 mongodb 切换到批量更新。找不到一个很好的例子。

谢谢你。

Luc*_*cia 5

Spring 数据 mongodb 中的 BulkOperations 使用 mongodb 中的 bulkWrite()。
来自 mongoDB 文档 ->

MongoDB 文档

因此,当您想在一个查询中更新许多具有不同更新的实体时,您可以通过这个 bulkOps 来实现。

让我们看一个例子,尽管它可能不是一个完美的例子。假设您有一个员工集合,其中包含在公司工作的员工。现在经过评估后,所有员工的薪水都会发生变化,每个员工的薪水变化都会有所不同,假设没有涉及百分比明智的加息,如果您想一次性更新变化,您可以使用bulkOps。

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.BulkOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.util.Pair;

public class Example {
    @Autowired
    MongoTemplate mongoTemplate;
    public int bulkUpdateEmployee(List<Pair<Query, Update>> updates){
        return mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED,"employees",Employee.class).updateMulti(updates).execute().getModifiedCount();
    }
}
Run Code Online (Sandbox Code Playgroud)

--------------这里我们可以准备查询和更新对 ------- -------为每个员工-> ---“查询” - 员工的 id 是 blabla ---“更新”- 将薪水设置为 xxx


小智 5

分享对我有用的批量操作代码

BulkOperations bulkOps = mongoTemplate.bulkOps(BulkMode.UNORDERED, Person.class);
for(Person person : personList) {
    Query query = new Query().addCriteria(new Criteria("id").is(person.getId()));
    Update update = new Update().set("address", "new Address as per requirement");
    bulkOps.updateOne(query, update);
}
BulkWriteResult results = bulkOps.execute();
Run Code Online (Sandbox Code Playgroud)