参考 > 参考 > mongo Shell方法 > 游标方法 > cursor.count()
cursor.
count
()¶mongo
壳法
此页面记录了mongo
shell方法,并且
没有引用MongoDB Node.js驱动程序(或任何其他驱动程序)方法。对于相应的MongoDB驱动程序API,请改为参考您特定的
MongoDB驱动程序文档。
注意
与4.0功能兼容的MongoDB驱动程序弃用各自的光标和收集count()
的API支持对应于新的API countDocuments()
和
estimatedDocumentCount()
。有关给定驱动程序的特定API名称,请参阅驱动程序API文档。
计算光标引用的文档数。将count()
方法附加
到
find()
查询以返回匹配文档的数量。该操作不执行查询,而是计算查询将返回的结果。
重要
该count()
方法具有以下原型形式:
该count()
方法具有以下参数:
参数 | 类型 | 描述 |
---|---|---|
applySkipLimit |
布尔值 | 可选的。指定是否在计数中考虑cursor.skip() 和cursor.limit() 方法的影响
。默认情况下,该count() 方法忽略的影响cursor.skip() 和
cursor.limit() 。设置applySkipLimit 要true 考虑这些方法的效果。 |
MongoDB还提供了等效db.collection.count()
的替代方案db.collection.find(<query>).count()
。
MongoDB支持hint()
with
的使用count()
。有关示例,请参见指定要使用的索引。
也可以看看
在分片群集上,如果存在孤立的文档或
正在进行块迁移,则在count()
没有查询谓词的情况下find
会导致计数
不准确。
为避免这些情况,请在分片群集上使用以下
db.collection.aggregate()
方法:
您可以使用$count
舞台来计数文档。例如,以下操作对集合中的文档进行计数:
该$count
阶段等效于以下
$group
+ $project
序列:
也可以看看
$collStats
返回基于集合的元数据的近似计数。
考虑具有以下索引的集合:
执行计数时,在以下情况下,MongoDB仅可以使用索引返回计数:
例如,以下操作可以仅使用索引返回计数:
但是,如果查询可以使用索引,但是查询谓词不能访问单个连续的索引键范围,或者查询还包含索引外部字段的条件,那么除了使用索引之外,MongoDB还必须阅读文档返回计数。
在这种情况下,在初次读取文档期间,MongoDB会将文档分页到内存中,以便随后进行相同计数操作的调用将具有更好的性能。
以下是该count()
方法的示例。
以下操作计算orders
集合中所有文档的数量
:
以下操作对orders
字段中ord_dt
大于的集合中的文档数进行计数
:new
Date('01/01/2012')
以下操作计算该orders
字段中ord_dt
大于考虑到的影响
的集合中文档的数量
:new
Date('01/01/2012')
limit(5)
以下操作使用名为的索引"status_1"
(其索引键规范为)返回集合中具有
大于且等于的文档的数量:{ status: 1 }
orders
ord_dt
new Date('01/01/2012')
status
"D"