使用spring data mongo驱动程序,我想使用一个查询更新mongodb中的多个文档,这些文档将具有不同的更新值。 我尝试了以下代码,但它对于符合查询条件的所有文档都具有相同的更新值。
List<Criteria> bigCriteria = new ArrayList<Criteria>();
for (MyClass myClass : myClasses){
Criteria criteria = Criteria.where("_id").is(myClass.getId());
bigCriteria.add(criteria);
}
//next line is just a psedudo code to explain what I intend to do here
query = <<create an or query using bigCriteria created above>>;
Update update = new Update();
update.set("age":11);
mongoOperation.updateMulti(query, update, User.class);
有没有办法更新具有不同值的所有文档?
答案 0 :(得分:1)
您可以使用批量写入API将批量文档发送到具有不同查询条件的服务器并更新文档。
像
这样的东西int count = 0;
int batch = 100;
BulkOperations bulkOps = mongoOperation.bulkOps(BulkOperations.BulkMode.UNORDERED, User.class);
for (MyClass myClass : myClasses){
Query query = new Query();
Criteria criteria = Criteria.where("_id").is(myClass.getId());
query.addCriteria(criteria);
Update update = new Update();
update.set("age", myClass.getAge());
bulkOps.updateOne(query, update);
count++;
if (count == batch) {
bulkOps.execute();
count = 0;
}
}
if (count > 0) {
bulkOps.execute();
}