对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

计算文档

在本指南中,您可以学习;了解如何检索集合中文档数量的精确计数和估计计数。

本指南中的示例使用Atlas示例数据集中sample_restaurants.restaurants集合。 要学习;了解如何创建免费的MongoDB Atlas 群集并加载示例数据集,请参阅入门。

重要

项目 Reactor 库

本指南使用 Project Reactor 库来使用Java Reactive Streams驱动程序方法返回的 Publisher 实例。要学习;了解有关 Project Reactor 库及其使用方法的更多信息,请参阅 Reactor 文档中的入门。要进一步学习;了解如何使用本指南中的 Project Reactor 库方法,请参阅“将数据写入MongoDB”指南。

使用countDocuments()方法计算集合中的文档数量。 要计算匹配特定搜索条件的文档数量,请将查询过滤传递给countDocuments()方法。

要学习;了解有关指定查询的更多信息,请参阅指定查询。

要返回集合中所有文档的计数,请调用countDocuments()方法并且不传入任何参数,如以下示例所示:

Publisher<Long> countPublisher = restaurants.countDocuments();
Mono.from(countPublisher).doOnNext(System.out::println).blockLast();

要返回匹配特定搜索条件的文档计数,请在countDocuments()方法中指定您的查询,如以下示例所示。 如需学习;了解有关如何指定查询的更多信息,请参阅“指定查询”指南。

Publisher<Long> countPublisher = restaurants.countDocuments(
eq("cuisine", "Italian"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

您可以通过向countDocuments()方法传递可选参数来修改该方法的行为。 CountOptions类提供了修改countDocuments()方法行为的方法。 要使用CountOptions类,请构造该类的新实例,然后调用其一个或多个方法来修改计数操作。 您可以将这些方法调用链接在一起。

要修改计数操作的行为,请将类实例和链式方法调用作为最后一个参数传递给countDocuments()方法。

下表描述了CountOptions类中的方法:

方法
说明

collation(Collation collation)

指定对结果进行排序时要使用的语言排序规则类型。 有关更多信息,请参阅 MongoDB Server 手册中的排序规则

comment(BsonValue comment)

为操作附加 BsonValue 注释。 有关更多信息,请参阅MongoDB Server手册中的插入命令字段指南。

comment(String comment)

为操作附加 String 注释。 有关更多信息,请参阅MongoDB Server手册中的插入命令字段指南。

hint(Bson hint)

将操作的索引设置为 Bson 值。 有关更多信息,请参阅MongoDB Server手册中的提示声明。

hintString(String hint)

将操作的索引设置为 String 值。 有关更多信息,请参阅MongoDB Server手册中的提示声明。

limit(int limit)

设置游标返回的最大文档数限制。 有关更多信息,请参阅MongoDB Server文档中的游标。

skip(int skip)

设置查询在返回结果之前跳过的文档数。 有关更多信息,请参阅MongoDB Server手册中的 skip。

以下代码使用countDocuments()方法对restaurants集合中cuisine值为"Italian"的所有文档进行计数。 它还将注释"Count all Italian restaurants"作为String附加到操作。

Publisher<Long> countPublisher = restaurants.countDocuments(
eq("cuisine", "Italian"),
new CountOptions().comment("Count all Italian restaurants"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

您可以通过调用estimatedDocumentCount()方法来估计集合中的文档数量。 该方法根据集合元数据估计文档数量,这可能比执行精确计数更快。

以下示例估计集合中的文档数量:

Publisher<Long> countPublisher = restaurants.estimatedDocumentCount();
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

您可以通过向estimatedDocumentCount()方法传递可选参数来修改该方法的行为。 EstimatedDocumentCountOptions类提供了修改estimatedDocumentCount()方法行为的方法。 要使用EstimatedDocumentCountOptions类,请构造该类的新实例,然后调用其一个或多个方法来修改计数操作。 您可以将这些方法调用链接在一起。

要修改计数操作的行为,请将类实例和链式方法调用作为唯一参数传递给estimatedDocumentCount()方法。

下表描述了可以设置用于自定义estimatedDocumentCount()的选项:

属性
说明

comment(BsonValue comment)

为操作附加 BsonValue 注释。 有关更多信息,请参阅MongoDB Server手册中的插入命令字段指南。

comment(String comment)

为操作附加 String 注释。 有关更多信息,请参阅MongoDB Server手册中的插入命令字段指南。

以下代码使用estimatedDocumentCount()方法估计restaurants集合中的文档数。 它还将"Estimated count of all documents"作为String附加到操作。

Publisher<Long> countPublisher = restaurants.estimatedDocumentCount(
new EstimatedDocumentCountOptions()
.comment("Estimated count of all documents"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: