MongoDb 使用 Spring Data mongo 更新具有不同值的多个文档

1 mongodb spring-data-mongodb

使用 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);
Run Code Online (Sandbox Code Playgroud)

有没有办法用不同的值更新所有文档?

use*_*814 5

您可以使用 Bulk Write 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();
}
Run Code Online (Sandbox Code Playgroud)