如何等待Upsert操作完成

时间:2018-07-18 04:02:02

标签: java mongodb spring-data-mongodb

我正在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”值。

亲切问候

0 个答案:

没有答案