How do i count documents in mongodb collection?

翻译或纠错本页面

  • Reference >
  • mongo Shell Methods >
  • Collection Methods >
  • db.collection.count()

Definition¶

db.collection.count(query, options)¶

Returns the count of documents that would match a find() query. The db.collection.count() method does not perform the find() operation but instead counts and returns the number of results that match a query.

ParameterTypeDescription
query document The query selection criteria.
options document Optional. Extra options for modifying the count.

The options document contains the following fields:

FieldTypeDescription
limit integer Optional. The maximum number of documents to count.
skip integer Optional. The number of documents to skip before counting.
hint string or document

Optional. An index name hint or specification for the query.

2.6 新版功能.

maxTimeMS integer Optional. The maximum amount of time to allow the query to run.
readConcern string

Optional. Specifies the read concern. The default level is "local".

To use read concern level of "majority",

  • you must start the mongod instances with the --enableMajorityReadConcern command line option (or the replication.enableMajorityReadConcern set to true if using a configuration file).
  • replica sets must use WiredTiger storage engine and election protocol version 1.

To ensure that a single thread can read its own writes, use "majority" read concern and "majority" write concern against the primary of the replica set.

To use a read concern level of "majority", you must specify a nonempty query condition.

3.2 新版功能.

count() is equivalent to the db.collection.find(query).count() construct.

Behavior¶

Sharded Clusters¶

On a sharded cluster, db.collection.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.

Index Use¶

Consider a collection with the following index:

When performing a count, MongoDB can return the count using only the index if:

  • the query can use an index,
  • the query only contains conditions on the keys of the index, and
  • the query predicates access a single contiguous range of index keys.

For example, the following operations can return the count using only the index:

db.collection.find( { a: 5, b: 5 } ).count()
db.collection.find( { a: { $gt: 5 } } ).count()
db.collection.find( { a: 5, b: { $gt: 10 } } ).count()

If, however, the query can use an index but the query predicates do not access a single contiguous range of index keys or the query also contains conditions on fields outside the index, then in addition to using the index, MongoDB must also read the documents to return the count.

db.collection.find( { a: 5, b: { $in: [ 1, 2, 3 ] } } ).count()
db.collection.find( { a: { $gt: 5 }, b: 5 } ).count()
db.collection.find( { a: 5, b: 5, c: 5 } ).count()

In such cases, during the initial read of the documents, MongoDB pages the documents into memory such that subsequent calls of the same count operation will have better performance.

Accuracy after Unexpected Shutdown¶

After an unclean shutdown of a mongod using the Wired Tiger storage engine, count statistics reported by count() may be inaccurate.

The amount of drift depends on the number of insert, update, or delete operations performed between the last checkpoint and the unclean shutdown. Checkpoints usually occur every 60 seconds. However, mongod instances running with non-default --syncdelay settings may have more or less frequent checkpoints.

Run validate on each collection on the mongod to to restore the correct statistics after an unclean shutdown.

注解

This loss of accuracy only applies to count() operations that do not include a query predicate.

Examples¶

Count all Documents in a Collection¶

To count the number of all documents in the orders collection, use the following operation:

This operation is equivalent to the following:

Count all Documents that Match a Query¶

Count the number of the documents in the orders collection with the field ord_dt greater than new Date('01/01/2012'):

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

The query is equivalent to the following:

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

How do I count records in MongoDB collection?

var value = db. collection. count(); and then print(value) or simply value , would give you the count of documents in the collection named collection .

How many files are in a MongoDB collection?

If you specify a maximum number of documents for a capped collection using the max parameter to create, the limit must be less than 2^32 documents. If you do not specify a maximum number of documents when creating a capped collection, there is no limit on the number of documents.

How do I count the number of documents in MongoDB collection in node JS?

js driver provides two methods for counting documents in a collection:.
collection. countDocuments() returns the number of documents in the collection that match the specified query. ... .
collection. estimatedDocumentCount() returns an estimation of the number of documents in the collection based on collection metadata..

How do I list all files in MongoDB?

In Java, you can retrieve all the documents in the current collection using the find() method of the com..
Create a MongoDB client by instantiating the MongoClient class..
Connect to a database using the getDatabase() method..