我正在Spring 5 Webflux中使用Reactive Mongo驱动程序来构建一个简单的社交媒体类型平台(关注/取消关注其他人)。
我有以下代码将follower(String)插入数组,如果插入,则将followerCount(Long)加1。
public Mono<UpdateResult> insertNewFollower(String toInsert, String insertTarget) {
return mongoOperations.upsert(query(where("username").is(insertTarget)), new Update().addToSet("followers", toInsert), FollowersCollection.class, FOLLOWERS_TABLE)
.flatMap(updateResult -> {
if (updateResult.getModifiedCount() > 0) {
return mongoOperations.updateFirst(query(where("username").is(insertTarget)), new Update().inc("followerCount", 1), Profile.class, TABLE);
}
return just(updateResult);
});
}
当前,此代码在检查已修改的文档计数时终止(在代码中标记为行),因为由于mongo查询的响应性质,在执行查询时该代码始终为0。
如何等待直到UpdateResult.isModifiedCountAvailable()== TRUE,导致修改后的计数不总是返回0,而是返回其true和“ final”值。
亲切问候