如何在没有任何查询过滤器的情况下使用 ReactiveMongoTemplate 计算 mongodb 集合?

How count a mongodb collection with ReactiveMongoTemplate without any query filter?

我想在我的 java spring 应用程序中 确定 mongodb 集合大小 。我知道 reactive rective Mongo 模板有一个 count() 方法是做什么的,但是它需要一个 query 参数。

所以我的解决方案是:

public Mono<Long> collectionSize(){
    Criteria criteria = Criteria.where("_id").exists(true);
    return this.reactiveMongoTemplate.count(Query.query(criteria),MY_COLLECTION_NAME);
}

但是我不喜欢这个解决方案,因为我必须使用 captain obvious 标准。

这个问题有更好的解决办法吗?

谢谢!

Criteria 有一个空构造函数。

public Mono<Long> collectionSize(){
    Criteria criteria = new Criteria();
    return this.reactiveMongoTemplate.count(Query.query(criteria),MY_COLLECTION_NAME);
}

Reference

并且 count 的所有变体都需要一个查询参数,如记录的那样 here

查询不需要条件,您可以只提供查询参数。 Reference

public Mono<Long> collectionSize(){
        return this.reactiveMongoTemplate.count(new Query(),MY_COLLECTION_NAME);
    }