从 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/