计算文档
Overview
在本指南中,您可以学习;了解如何检索集合中文档数量的准确估计计数。
样本数据
本指南中的示例使用 Atlas示例数据集的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 | Specifies a comment to attach to the operation. |
skip | Sets the number of documents to skip before returning results. |
limit | Sets the maximum number of documents to count. Must be a positive integer. |
maxTime | Sets the maximum amount of time to allow the operation to run, in milliseconds. |
collation | Specifies the kind of language collation to use when sorting
results. For more information, see Collation
in the MongoDB Server manual. |
hint | Sets the index to scan for documents. |
以下示例使用CountOptions
对象为countDocuments()
操作添加注释:
val options = CountOptions().comment("Retrieving count") collection.countDocuments(Filters.empty(), options)
检索估计计数
使用estimatedDocumentCount()
方法检索集合中文档数量的估计值。 该方法根据集合元数据估计文档数量,这可能比执行精确计数更快。
以下示例打印集合中的估计文档数:
print(collection.estimatedDocumentCount())
21349
自定义估计计数行为
estimatedDocumentCount()
方法接受EstimatedDocumentCountOptions
对象形式的可选参数,该对象表示可用于配置计数操作的选项。 要设立这些选项,您可以实例化新的EstimatedDocumentCountOptions
对象,使用相应的方法设置对象的字段,然后将其传递给estimatedDocumentCount()
方法。 如果不指定任何选项,驾驶员不会自定义计数操作。
下表描述了可以设置用于自定义estimatedDocumentCount()
的选项:
选项 | 说明 |
---|---|
comment | Specifies a comment to attach to the operation. |
maxTime | Specifies the maximum amount of time to allow the operation to run, in milliseconds. |
以下示例使用EstimatedDocumentCountOptions
对象为estimatedDocumentCount()
操作添加注释:
val options = EstimatedDocumentCountOptions().comment("Retrieving count") collection.estimatedDocumentCount(options)
API 文档
要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: