MongoTemplate 一次更新多个文档而不使用 saveAll() 或循环

Posted

技术标签:

【中文标题】MongoTemplate 一次更新多个文档而不使用 saveAll() 或循环【英文标题】:MongoTemplate update multiple Document with at once without using saveAll() or loops 【发布时间】:2022-01-07 17:13:14 【问题描述】:

我无法一次保存多个文档,我的需要是在更新多个文档时只更新目标字段: 我正在尝试做的事情:

Update1 ("field Name" , " AB" ) ;
Update2 ("field Name", "ABC");
Query query = mongoTemplate.Aggr(...)

mongoTemplate.multipleUpdate(..,Update1, Update 2);

有没有办法做到这一点?

【问题讨论】:

可以在mongodb中使用insertMany功能 【参考方案1】:

我发现自己通过使用 BulkOperations 可以将多个 Update 堆叠成块,然后同时执行它! 我的代码:

BulkOperations bulkOperations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, Foo.class);

        List<Foo> fooList = FooRepository.findAllByIdIn(Arrays.asList(id));
        for (Foo foo : fooList) 
            Query query = new Query().addCriteria(new Criteria("...").is(...));
            Update update = new Update().set(..., ...);
            bulkOperations.updateOne(query, update);
        
        bulkOperations.execute();

【讨论】:

以上是关于MongoTemplate 一次更新多个文档而不使用 saveAll() 或循环的主要内容,如果未能解决你的问题,请参考以下文章

通过 Instagram API 访问公共 Instagram 内容而不使 accesstoken 过期

更新查询中的 MongoTemplate 确定性顺序

使 MKMapView 的背景颜色变暗而不使 MKOverlay 变暗

使用 XLWINGS 打开工作簿而不使其可见

调整画布图像大小而不使其模糊

UISearchBar-更改范围而不使表格变灰?