Navigation
This version of the documentation is archived and no longer supported.

count

Definition

count

Counts the number of documents in a collection. Returns a document that contains this count and as well as the command status. count has the following form:

{ count: <collection>, query: <query>, limit: <limit>, skip: <skip> }

count has the following fields:

Field Type Description
count string The name of the collection to count.
query document Optional. A query that selects which documents to count in a collection.
limit integer Optional. The maximum number of matching documents to return.
skip integer Optional. The number of matching documents to skip before returning results.

Note

MongoDB also provides the count() and db.collection.count() wrapper methods in the mongo shell.

Behavior

On a sharded cluster, count can result in an inaccurate count if orphaned documents exist or if a chunk migration is in progress.

To avoid these situations, on a sharded cluster, use the $group stage of the db.collection.aggregate() method to $sum the documents. For example, the following operation counts the documents in a collection:

db.collection.aggregate(
   [
      { $group: { _id: null, count: { $sum: 1 } } }
   ]
)

To get a count of documents that match a query condition, include the $match stage as well:

db.collection.aggregate(
   [
      { $match: <query condition> },
      { $group: { _id: null, count: { $sum: 1 } } }
   ]
)

See Perform a Count for an example.

Examples

The following sections provide examples of the count command.

Count all Documents

The following operation counts the number of all documents in the orders collection:

db.runCommand( { count: 'orders' } )

In the result, the n, which represents the count, is 26, and the command status ok is 1:

{ "n" : 26, "ok" : 1 }

Count Documents with Specified Field Values

The following operation returns a count of the documents in the orders collection where the value of the ord_dt field is greater than Date('01/01/2012'):

db.runCommand( { count:'orders',
                 query: { ord_dt: { $gt: new Date('01/01/2012') } }
               } )

In the result, the n, which represents the count, is 13 and the command status ok is 1:

{ "n" : 13, "ok" : 1 }

Skip Matching Documents

The following operation returns a count of the documents in the orders collection where the value of the ord_dt field is greater than Date('01/01/2012') and skip the first 10 matching documents:

db.runCommand( { count:'orders',
                 query: { ord_dt: { $gt: new Date('01/01/2012') } },
                 skip: 10 }  )

In the result, the n, which represents the count, is 3 and the command status ok is 1:

{ "n" : 3, "ok" : 1 }
←   aggregate distinct  →