【发布时间】:2025-12-21 16:05:07
【问题描述】:
1) 问题描述:
- 我正在使用响应式 Spring-Data + Spring WebFlux + MongoDb + ReactiveMongoTemplate;
- 我有 02 个集合:Task 和 Project
2) 我的目标是:
- 仅使用“一个 更新方法”
- 更新 02 集合中的 02 文档(同时 - 同时)
3) 代码:
3.1) 采集任务
@Document(collection = "task")
public class Task {
@Id
private String _id;
@Field("pid")
private String projectId;
private String taskName;
private String ownerProject;
}
3.2) 采集项目
@Document(collection = "project")
public class Project {
@Id
private String _id;
private String ownerProject;
private Task tasksProject;
private String code;
}
3.3) 我当前的代码 - 不工作
public Mono<Void> updateWithCriteriaTemplateMult(String id) {
Query projectDocument = new Query();
projectDocument.addCriteria(Criteria.where("_id")
.is(id));
Query taskDocument = new Query();
taskDocument.addCriteria(Criteria.where("projectId")
.is(id));
return template
.update(projectDocument, Project.class)
.then(template.update(taskDocument, Task.class))
;
}
2) 问题:
-
如何使用 ReactiveMongoTemplate 编写/执行“相同的 UPDATE-METHOD”“同时”更新两个集合?
- 示例 01:我的方法需要“更新”两个集合中的“ownerProject”字段:
- 任务:在本例中,“ownerProject”是一个简单字段
- 项目:在本例中,“ownerProject”是一个简单字段
- 示例 01:我的方法需要“更新”两个集合中的“ownerProject”字段:
-
示例 02:
- 我的方法需要在两个集合中“更新”字段“taskName”:
- 任务:在这种情况下,“任务名称”是一个简单的字段
- 项目:在这种情况下,“TaskName”是“内部”“tasksProject”字段
- 我的方法需要在两个集合中“更新”字段“taskName”:
非常感谢您的帮助
【问题讨论】:
-
它是如何“不工作”的?请更新结果、错误等
-
其实并没有报错信息。简单地说,第二个集合(任务)没有被更新,虽然,第一个(项目)正在更新。好奇怪……
-
你为什么要链接这么多
then? -
@Toerktumlare Opsss。我的错。已更正
标签: java mongodb spring-webflux spring-data-mongodb reactive-mongo-java