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

Posted

技术标签:

【中文标题】如何在没有任何查询过滤器的情况下使用 ReactiveMongoTemplate 计算 mongodb 集合?【英文标题】:How count a mongodb collection with ReactiveMongoTemplate without any query filter? 【发布时间】:2021-04-16 13:39:02 【问题描述】:

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

所以我的解决方案是:

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

但是我不喜欢这个解决方案,因为我必须使用一个明显的标准。

这个问题有更好的解决方案吗?

谢谢!

【问题讨论】:

【参考方案1】:

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);
    

【讨论】:

以上是关于如何在没有任何查询过滤器的情况下使用 ReactiveMongoTemplate 计算 mongodb 集合?的主要内容,如果未能解决你的问题,请参考以下文章