文档菜单
文档首页
/ / /
Kotlin 同步驱动程序
/

计数文档

本页内容

  • 概述
  • 示例数据
  • 获取准确的计数
  • 计数所有文档
  • 计数特定文档
  • 自定义计数行为
  • 检索估计计数
  • 自定义估计计数行为
  • API 文档

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

本指南中的示例使用来自sample_mflix 数据库中的 movies 集合。有关如何创建免费 MongoDB Atlas 集群和加载数据集的说明,请参阅Atlas 示例数据集指南。

以下 Kotlin 数据类模型表示此集合中的文档

data class Movie(
@BsonId
val id: ObjectId,
val title: String
)

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

有关指定查询的更多信息,请参阅指定查询.

要返回集合中所有文档的数量,请使用不带参数的 countDocuments() 方法,如下例所示

println(collection.countDocuments())
21349

要返回匹配特定搜索条件的文档数量,请在 countDocuments() 方法中指定您的查询。以下示例打印出所有在 movies 集合中 year 字段值等于 1930 的文档数量

println(collection.countDocuments(eq("year", "1930")))
10

countDocuments() 方法接受以 CountOptions 对象形式提供的可选参数,该对象表示您可以使用它来配置统计操作。您可以通过实例化一个新的 CountOptions 对象,使用相应的方法设置对象的字段,并将其传递给 countDocuments() 方法来设置这些选项。如果您不指定任何选项,驱动程序不会自定义统计操作。

以下表格描述了您可以设置来自定义 countDocuments()

选项
描述
comment
指定要附加到操作的注释。
skip
设置在返回结果之前要跳过的文档数量。
limit
设置要计数的最大文档数。必须是正整数。
maxTime
设置允许操作运行的最大时间,以毫秒为单位。
排序
指定在排序结果时使用的语言排序类型。有关更多信息,请参阅 MongoDB 服务器手册中的排序
提示
设置扫描文档的索引。

以下示例使用一个 CountOptions 对象向 countDocuments() 操作添加注释

val options = CountOptions().comment("Retrieving count")
collection.countDocuments(Filters.empty(), options)

使用 estimatedDocumentCount() 方法检索集合中文档数量的估计值。该方法根据集合元数据估计文档数量,可能比执行准确计数更快。

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

print(collection.estimatedDocumentCount())
21349

estimatedDocumentCount() 方法接受以 EstimatedDocumentCountOptions 对象形式存在的可选参数,该对象表示可以用于配置计数操作的选项。您可以通过实例化一个新的 EstimatedDocumentCountOptions 对象,使用相应的方法设置对象的字段,并将其传递给 estimatedDocumentCount() 方法来设置这些选项。如果您未指定任何选项,驱动程序不会自定义计数操作。

以下表格描述了可以设置的选项,以自定义 estimatedDocumentCount()

选项
描述
comment
指定要附加到操作的注释。
maxTime
指定允许操作运行的最大时间,以毫秒为单位。

以下示例使用一个 EstimatedDocumentCountOptions 对象向 estimatedDocumentCount() 操作添加注释

val options = EstimatedDocumentCountOptions().comment("Retrieving count")
collection.estimatedDocumentCount(options)

要了解更多关于本指南中讨论的任何方法或类型的信息,请参阅以下 API 文档

返回

指定要返回的文档