如何在没有任何查询过滤器的情况下使用 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 集合?的主要内容,如果未能解决你的问题,请参考以下文章

如何继续向现有 Firestore 查询添加条件?

无法在没有可用于分区消除的过滤器的情况下查询表

如何在没有任何重复行的情况下连接 cognos 中的两个表?

如何在没有连接的情况下查询多个相关表,并使用 JDBC 获得一致的数据?

如何在没有任何重复行的情况下连接两个表中的表?

如何在没有查询的情况下在 Retrofit 中提取 Json 数据