MongoDB Count() Method – db.Collection.count()
MongoDB’s count()
method is a powerful tool for retrieving the number of documents in a collection that match a specified query. It offers flexibility in filtering and is useful for obtaining quick counts based on various criteria.
In this article, We will explain the MongoDB count() method in detail, including its syntax, parameters, examples, and best practices. By the end of this article, we will have a deep understanding of how to use the count()
method effectively for different use cases.
What is MongoDB Count()
Method?
The count()
method in MongoDB is a simple and effective way to count the number of documents that match a given query in a collection. It can take an optional query parameter to filter the documents before counting. It is functionally equivalent to db.collection.find().count()
and is available in both db.collection
and cursor objects.
Key Features of count()
Method
- Counts documents based on a query condition (or all documents if no filter is applied).
- Can include optional parameters like
limit
,skip
, andhint
for more refined querie - We cannot use this method in transactions.
- In sharded clusters, results may be inaccurate due to ongoing migrations. Use
aggregate()
instead for accurate results. - To avoid this issue, it’s recommended to use
db.collection.aggregate()
method instead.
Syntax of count() Method
The count()
method can be used in two ways:
1. Count all documents in a collection:
db.Collection_Name.count()
2. Count documents that match a filter condition:
db.Collection_Name.count(
Selection_criteria,
{
limit: <integer>,
skip: <integer>,
hint: <string or document>,
maxTimeMS : <integer>,
readConcern: <string>,
collation: <document>
})Or if we want to count the number of documents in the collection
db.Collection_name.count()
Parameters of count()
Method
1. Selection Criteria
- The first parameter is a document specifying the query condition to filter documents before counting.
- If omitted,
count()
will count all documents in the collection.
2. Optional Parameters
The second parameter is an optional document that allows fine-tuning of the counting process.
Parameter | Description |
---|---|
limit |
Limits the number of documents counted. |
skip |
Skips a specified number of documents before counting. |
hint |
Specifies an index to use for performance optimization. |
maxTimeMS |
Sets the maximum time allowed for the query to execute. |
readConcern |
Defines the read concern level (e.g., majority ). |
collation |
Allows language-specific sorting and case-sensitivity rules. |
Return Type
The count()
method returns an integer representing the number of documents that match the selection criteria.
Examples of Using count() in MongoDB
To demonstrate the count()
method, we will use a sample MongoDB database named gfg
with a collection called student
. The collection contains multiple documents, each representing a student with name and age fields. Below is a sample dataset used for the examples:
- Database: gfg
- Collections: student
- Document: Four documents contains name and age of the students
Example 1: Count all Documents in a Collection
This example demonstrates how to count the total number of documents present in the student
collection.
Query:
db.student.count()
Output:
Explanation:
The above query retrieves the total number of documents stored in the student
collection. Since no filter condition is applied, it counts all documents in the collection and returns the result as an integer.
Example 2: Count all Documents that Match a Query
This example demonstrates how to count documents in the student
collection that meet a specific condition, such as age greater than 18.
Query:
db.student.count({age:{$gt:18}})
Output:

Explanation:
$gt
stands for “greater than” and is used to filter documents where theage
field is greater than18
.- The query first filters the students matching the condition and then counts the number of resulting documents.
- The output returns the total count of students satisfying the condition.
Example 3: Count with limit
and skip
Parameters
This example demonstrates how to limit the number of documents counted while skipping a specified number of documents in the student
collection.
Query:
db.student.count({}, { skip: 1, limit: 2 })
Explanation:
skip: 1
→ Skips the first document in the collection.limit: 2
→ Counts only the next two documents after skipping.- This is useful when working with pagination or when counting a specific range of documents in large datasets.
Best Practices for Using count()
in MongoDB
1. Avoid Using count()
in Transactions
- The
count()
method cannot be used within transactions in MongoDB. - For reliable counting in transactional contexts, use the
aggregate()
method instead
2. Use countDocuments()
Instead of count()
- The
count()
method is deprecated in MongoDB 4.0+. - It is recommended to use
countDocuments()
, which provides more accurate results in sharded clusters and distributed environments.
3. Optimize Performance Using Indexes
- Using the
hint
parameter allows MongoDB to leverage an index for faster count queries. - This optimization reduces query execution time by directing MongoDB to use the most efficient index for filtering.
Example:
db.student.count({ age: { $gt: 18 } }, { hint: { age: 1 } })
- Here, MongoDB uses the index on the
age
field ({ age: 1 }
) to perform an optimized count operation. - This improves performance, especially on large datasets.
Conclusion
The count()
method in MongoDB is a useful tool for quickly determining the number of documents that meet certain criteria. It can be used with various options to fine-tune the counting process, such as limiting the number of documents counted or specifying a maximum time for the operation to complete. However, with its deprecation in MongoDB 4.0+, it is best practice to use countDocuments()
for more accurate and efficient results.
FAQs on MongoDB count
Can I use the count()
method in transactions?
No, the
count()
method cannot be used in transactions in MongoDB.
What should I do if count()
returns an inaccurate count in a shared cluster?
If you encounter inaccuracies with
count()
in a shared cluster, it’s recommended to use thedb.collection.aggregate()
method instead, as it can provide more reliable counts in such scenarios.
What is the difference between count()
and countDocuments()
in MongoDB?
The
count()
method is deprecated in MongoDB 4.0 and higher, and it’s recommended to usecountDocuments()
instead.countDocuments()
provides more functionality and better performance compared tocount()
.