mongotemplate - Spring数据mongodb批量更新

标签 mongotemplate

从 1.9.0.RELEASE 开始,spring-data-mongodb 支持批量更新。

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();

mongoTemplate 有一个函数叫做 void save(Object objectToSave);我想插入/更新整个记录但不是某些特定字段。有什么方法或功能可以使 Update 类无效?

也许像这样..?
BulkOperations ops = template.bulkOps(BulkMode.UNORDERED, Match.class);
for (User user : users) {
    ...
    ops.save(query(where("id").is(user.getId())), user);
}
ops.execute();

最佳答案

你可以试试这个:

BulkOperations ops = mongoOps.bulkOps(BulkMode.<ordered/unordered>,<your ob>.class);
loop on your batch {
    Update update = Update.fromDBObject(
        BasicDBObjectBuilder.start("$set", <your ob>).get()
    );
    ops.upsert(query(where("").is(<your ob>.something())), update);
}
ops.execute();

这将像保存一样更新整个 pojo(不是某些特定字段)。

关于mongotemplate - Spring数据mongodb批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40646398/

相关文章:

java - 蒙戈 : How to count aggregation groups via Java's MongoTemplate

Spring Boot MongoDB 多数据库

java - 如何使用 MongoTemplate 将单个字段插入到 JSON 中?

Java MongoDB 在多个字段中搜索值

java - 使用 MongoTemplate 获取排序的不同值

spring-boot - 我想获取MongoTemplate的findAndModify返回值作为修改后的值

java - MongoTemplate 拉取查询在 mongo shell 和 spring mongoTemplate 中不起作用

mongodb - 使用 mongoTemplate 将 String 字段序列化为 objectId 字段

java - MongoDB Java 驱动程序的自定义实现

mongodb - 如何计算mongodb spring中特定字段的平均值?