计数文档
概述
在本指南中,您可以学习如何检索集合中文档数量的准确值和估计值。
示例数据
本指南中的示例使用来自sample_mflix
数据库中的 movies
集合。有关如何创建免费 MongoDB Atlas 集群和加载数据集的说明,请参阅Atlas 示例数据集指南。
以下 Kotlin 数据类模型表示此集合中的文档
data class Movie( 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 文档
要了解更多关于本指南中讨论的任何方法或类型的信息,请参阅以下 API 文档