db.collection.count()
在本页面
定义
-
db.collection. count
(查询,选项)-
返回将_查询集合或视图的find()查询的文档计数。 db.collection.count()方法不执行find()操作,而是计算并返回匹配查询的结果数。
-
注意
与4.0功能兼容的MongoDB驱动程序弃用各自的游标和收集
count()
的API,取而代之的是新的APIcountDocuments()
和estimatedDocumentCount()
。有关给定驱动程序的特定API名称,请参阅驱动程序文档。
重要
避免使用
db.collection.count()
没有查询谓词的方法,因为如果没有查询谓词,该方法将基于集合的元数据返回结果,这可能会导致近似计数。特别是,
在分片群集上,结果计数将无法正确过滤出孤立的文档。
不正常关机后,计数可能不正确。
有关基于集合元数据的计数,另请参阅 带有count选项的collStats管道阶段。
参数 | 类型 | 描述 |
---|---|---|
|
document |
查询选择标准。 |
|
document |
可选的。修改计数的额外选项。 |
options
文档包含以下字段:
领域 | 类型 | 描述 |
---|---|---|
|
integer |
可选的。要计算的最大文档数。 |
|
integer |
可选的。计数前要跳过的文档数。 |
|
string or document |
可选的。查询的索引 name 提示或规范。 version 2.6 中的新内容。 |
|
integer |
可选的。允许查询 run 的最大 time 时间。 |
|
string |
可选的。指定阅读关注。默认的 level 是“本地”。 要使用阅读关注的阅读关注 level,replica sets 必须使用WiredTiger 存储引擎并选举protocol version 1。 从 MongoDB 3.6 开始,默认情况下启用对读取关注“多数”的支持。对于 MongoDB 3.6.1 - 3.6.x,您可以禁用读取关注“多数”。有关更多信息,请参阅禁用阅读关注多数。 要确保单个线程可以读取自己的写入,请对副本集的主要使用“多数”读取关注和“多数”写入关注。 要使用“多数”的阅读关注 level,必须指定非空
|
|
document |
可选的。 指定 用于操作的排序规则。 归类允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。 排序规则选项具有以下语法: collation: { locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } 指定排序规则时,该
|
count()等同于
db.collection.find(query).count()
。
也可以看看
cursor.count()
行为
Sharded Clusters
在分片 cluster 上,如果孤儿文件存在或块迁移正在进行中,db.collection.count()可能导致计数不准确。
要避免这些情况,请在分片 cluster 上使用db.collection.aggregate()方法:
-
您可以使用$count阶段来计算文档。对于 example,以下操作计算集合中的文档:
-
$count阶段等效于以下$group $project序列:
-
要获取匹配查询条件的文档计数,还要包括$match阶段:
或者,如果使用
$group + $project
等效: