Definition
New in version 5.0.
Returns the number of documents in a group.
$count is available in these stages:
- $setWindowFields(Available starting in MongoDB 5.0)
Note
Disambiguation
This page describes the $count aggregation accumulator. For
the $count aggregation pipeline stage, see
$count (aggregation pipeline).
Syntax
$count syntax:
{ $count: { } } 
$count does not accept any parameters.
Behavior
$count is functionally equivalent to using { $sum : 1 }
within the $group stage.
Tip
Examples
Create a cakeSales collection that contains cake sales in the states
of California (CA) and Washington (WA):
db.cakeSales.insertMany( [    { _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"),      state: "CA", price: 13, quantity: 120 },    { _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"),      state: "WA", price: 14, quantity: 140 },    { _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"),      state: "CA", price: 12, quantity: 145 },    { _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"),      state: "WA", price: 13, quantity: 104 },    { _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"),      state: "CA", price: 41, quantity: 162 },    { _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"),      state: "WA", price: 43, quantity: 134 } ] ) 
The cakeSales collection is used in the following examples.
Use in $group Stage
This example uses $count in the $group stage to
count the number of documents in the cakeSales collection for each
state:
db.cakeSales.aggregate( [    {       $group: {          _id: "$state",          countNumberOfDocumentsForState: {             $count: {}          }       }    } ] ) 
In the example:
- _id: "$state"groups the documents by the- statefield value. There are groups for- CAand- WA.
- $count: {}sets the- countNumberOfDocumentsForStatefield to the number of documents that share the same- statefield value.
In this output, the number of documents for CA and WA is shown
in the countNumberOfDocumentsForState field:
{ "_id" : "CA", "countNumberOfDocumentsForState" : 3 } { "_id" : "WA", "countNumberOfDocumentsForState" : 3 } 
Use in $setWindowFields Stage
This example uses $count in the $setWindowFields
stage to count the number of documents in the cakeSales collection
for each state defined in the window:
db.cakeSales.aggregate( [    {       $setWindowFields: {          partitionBy: "$state",          sortBy: { orderDate: 1 },          output: {             countNumberOfDocumentsForState: {                $count: {},                window: {                   documents: [ "unbounded", "current" ]                }             }          }       }    } ] ) 
In the example:
- partitionBy: "$state"partitions the documents in the collection by- state. There are partitions for- CAand- WA.
- sortBy: { orderDate: 1 }sorts the documents in each partition by- orderDatein ascending order (- 1), so the earliest- orderDateis first.
- outputsets the- countNumberOfDocumentsForStatefield to the number of documents using- $countthat is run in a documents window.- The window contains documents between an - unboundedlower limit and the- currentdocument in the output. This means- $countreturns the number of documents between the beginning of the partition and the current document.
In this output, the number of documents for CA and WA is shown
in the countNumberOfDocumentsForState field:
{ "_id" : 4, "type" : "strawberry", "orderDate" : ISODate("2019-05-18T16:09:01Z"),   "state" : "CA", "price" : 41, "quantity" : 162, "countNumberOfDocumentsForState" : 1 } { "_id" : 0, "type" : "chocolate", "orderDate" : ISODate("2020-05-18T14:10:30Z"),   "state" : "CA", "price" : 13, "quantity" : 120, "countNumberOfDocumentsForState" : 2 } { "_id" : 2, "type" : "vanilla", "orderDate" : ISODate("2021-01-11T06:31:15Z"),   "state" : "CA", "price" : 12, "quantity" : 145, "countNumberOfDocumentsForState" : 3 } { "_id" : 5, "type" : "strawberry", "orderDate" : ISODate("2019-01-08T06:12:03Z"),   "state" : "WA", "price" : 43, "quantity" : 134, "countNumberOfDocumentsForState" : 1 } { "_id" : 3, "type" : "vanilla", "orderDate" : ISODate("2020-02-08T13:13:23Z"),   "state" : "WA", "price" : 13, "quantity" : 104, "countNumberOfDocumentsForState" : 2 } { "_id" : 1, "type" : "chocolate", "orderDate" : ISODate("2021-03-20T11:30:05Z"),   "state" : "WA", "price" : 14, "quantity" : 140, "countNumberOfDocumentsForState" : 3 }