MongoDB聚合:$count

$count阶段用于统计管道中文档的数量。

语法

js 复制代码
{ $count: <string> }

<string> 是文档计数输出字段的名称。<string>必须是非空字符串,不能以$开头,也不能包含.字符。

$count阶段相当于下面$group+$project聚合序列:

js 复制代码
db.collection.aggregate( [
   { $group: { _id: null, myCount: { $sum: 1 } } },
   { $project: { _id: 0 } }
] )

其中myCount是包含计数的输出字段。也可以为输出字段指定其他名称。

举例

"scores"的集合有以下文档:

json 复制代码
{ "_id" : 1, "subject" : "History", "score" : 88 }
{ "_id" : 2, "subject" : "History", "score" : 92 }
{ "_id" : 3, "subject" : "History", "score" : 97 }
{ "_id" : 4, "subject" : "History", "score" : 71 }
{ "_id" : 5, "subject" : "History", "score" : 79 }
{ "_id" : 6, "subject" : "History", "score" : 83 }

下面的汇总操作分为两个阶段:

  1. $match阶段会排除分值小于或等于80的文档,将分值大于80的文档传递到下一阶段。

  2. $count阶段返回聚合管道中剩余文档的计数,并将该值赋值给名为passing_scores的字段。

js 复制代码
db.scores.aggregate(
  [
    {
      $match: {
        score: {
          $gt: 80
        }
      }
    },
    {
      $count: "passing_scores"
    }
  ]
)

操作返回以下结果:

json 复制代码
{ "passing_scores" : 4 }
相关推荐
_Jimmy_3 分钟前
mysql 键长如何计算
数据库·mysql
J2虾虾3 分钟前
通过Web界面来访问和操作MySQL数据库的开源项目
前端·数据库·mysql
雪碧聊技术8 分钟前
Oracle数据迁移指南:如何按主键顺序提取并迁移前10,000条记录(基于CSV)
数据库·oracle·数据导出·数据导入·数据备份、迁移
数据知道9 分钟前
MongoDB压缩算法选择:snappy, zlib, zstd性能与压缩比对比
数据库·mongodb
m0_5281744510 分钟前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
Access开发易登软件15 分钟前
在 Access 实现标签输入控件:VBA + HTML 混合开发实战
前端·数据库·信息可视化·html·excel·vba·access
程序员一点20 分钟前
第23章:备份与灾难恢复策略
linux·运维·网络·数据库·openeuler
数据知道25 分钟前
MongoDB内存使用优化:working set理论与缓存命中率提升策略
数据库·mongodb
SelectDB技术团队28 分钟前
OLAP 无需事务?Apache Doris 如何让实时分析兼具事务保障
数据库·数据仓库·人工智能·云原生·实时分析
数据库小组29 分钟前
NineData 社区版慢 SQL 功能能做什么?给 DBA 的一套本地化治理工具
数据库·sql·dba·慢sql·数据库管理工具·ninedata·迁移工具