count
¶计算集合或视图中的文档数。返回包含此计数以及命令状态的文档。
注意
与4.0功能兼容的MongoDB驱动程序弃用各自的光标和收集count()
的API(它运行的
count
命令)支持新的API,对应于
countDocuments()
和estimatedDocumentCount()
。有关给定驱动程序的特定API名称,请参阅驱动程序API文档。
count
具有以下形式:
注意
从4.2版开始,MongoDB对count
命令的选项名称实施更严格的验证。现在,如果您指定未知的选项名称,该命令将出错。
count
具有以下字段:
领域 | 类型 | 描述 |
---|---|---|
count |
串 | 要计数的集合或视图的名称。 |
query |
文献 | 可选的。一个查询,用于选择要在集合或视图中计数的文档。 |
limit |
整数 | 可选的。要返回的匹配文件的最大数量。 |
skip |
整数 | 可选的。返回结果前要跳过的匹配文档数。 |
hint |
字符串或文件 | 可选的。要使用的索引。指定索引名称为字符串或索引规范文档。 |
readConcern |
文献 | 可选的。指定读取关注。该选项具有以下语法: 可能的阅读关注级别为:
有关阅读关注级别的更多信息,请参阅 阅读关注级别。 |
collation |
文献 | 可选的。 指定 用于操作的排序规则。 归类允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。 排序规则选项具有以下语法: 指定排序规则时,该 如果未指定排序规则,但是集合具有默认排序规则(请参阅参考资料 如果没有为集合或操作指定排序规则,则MongoDB使用先前版本中使用的简单二进制比较进行字符串比较。 您不能为一个操作指定多个排序规则。例如,您不能为每个字段指定不同的排序规则,或者如果对排序执行查找,则不能对查找使用一种排序规则,而对排序使用另一种排序规则。 3.4版的新功能。 |
重要
count
没有查询谓词的情况下使用和及其包装方法(注意:
db.collection.estimatedDocumentCount()
不使用查询谓词),因为如果没有查询谓词,这些操作将基于集合的元数据返回结果,这可能会导致近似计数。特别是,
在分片集群上,如果存在孤立文档或
正在进行块迁移,则该count
命令在没有查询谓词的情况下运行时可能导致计数
不准确。
为避免这些情况,请在分片群集上使用以下
db.collection.aggregate()
方法:
您可以使用$count
舞台来计数文档。例如,以下操作对集合中的文档进行计数:
该$count
阶段等效于以下
$group
+ $project
序列:
也可以看看
$collStats
返回基于集合的元数据的近似计数。
mongod
使用Wired Tiger存储引擎不正常关闭后,所报告的计数统计信息
count
可能不准确。
漂移量取决于在最后一个检查点与异常关闭之间执行的插入,更新或删除操作的数量。检查点通常每60秒出现一次。但是,mongod
使用非默认--syncdelay
设置运行的实例可能具有或多或少的频繁检查点。
validate
在mongod
不正常关机后,对上的每个集合运行以恢复正确的统计信息。
注意
这一精度损失仅适用于count
那些操作不包括查询文档。
以下各节提供了该count
命令的示例。
以下操作返回orders
集合中文档的计数,
其中该ord_dt
字段的值大于,Date('01/01/2012')
并跳过第一个10
匹配的文档:
结果是n
,代表计数的is是3
,命令状态ok
为1
:
以下操作使用索引返回集合中文档的计数,其中该字段的值大于且该
字段等于:{ status: 1 }
orders
ord_dt
Date('01/01/2012')
status
"D"
结果是n
,代表计数的is是1
,命令状态ok
为1
:
要覆盖默认的阅读关注级别"local"
,请使用readConcern
选项。
对副本集的以下操作指定“
读取关注点”,"majority"
以读取已确认已写入大多数节点的数据的最新副本。
重要
若要使用关注级别"majority"
,副本集必须使用WiredTiger存储引擎。
您可以"majority"
为具有三名成员的主次仲裁器(PSA)架构的部署禁用读取关注。但是,这对变更流(仅在MongoDB 4.0和更早版本中)和分片群集上的事务有影响。有关更多信息,请参见禁用多数阅读关注。
要使用readConcern
级别"majority"
,您必须指定一个非空query
条件。
无论读关注级别如何,节点上的最新数据都可能无法反映系统中数据的最新版本。
为确保单个线程可以读取其自己的写入,"majority"
请对"majority"
副本集的主数据库使用
读取关注和写入关注。