Docs Menu

Docs HomeDevelop ApplicationsMongoDB Manual


On this page

  • Description
  • Syntax
  • Behavior
  • Examples


mongo Shell Method

This page documents a mongo method. This is not the documentation for database commands or language-specific drivers, such as Node.js. To use the database command, see the validate command.

For MongoDB API drivers, refer to the language-specific MongoDB driver documentation.

Validates a collection. The method scans a collection data and indexes for correctness and returns the result. For details of the output, see Validate Output.

The db.collection.validate() method is a wrapper around the validate command.


Changed in version 4.4

db.collection.validate() no longer accepts just a boolean parameter. See db.collection.validate() Parameter Change.

The db.collection.validate() method has the following syntax:

db.collection.validate( {
full: <boolean> // Optional
} )

The db.collection.validate() method can take the following optional document parameter with the fields:


Optional. A flag that determines whether the command performs a slower but more thorough check or a faster but less thorough check.

  • If true, performs a more thorough check with the following exception:

    • Starting in MongoDB 4.4, full validation on the oplog for WiredTiger skips the more thorough check.

  • If false, omits some checks for a faster but less thorough check.

The default is false.

Starting in MongoDB 3.6, for the WiredTiger storage engine, only the full validation process will force a checkpoint and flush all in-memory data to disk before verifying the on-disk data.

In previous versions, the data validation process for the WT storage engine always forces a checkpoint.

The db.collection.validate() method is potentially resource intensive and may impact the performance of your MongoDB instance, particularly on larger data sets.

The db.collection.validate() method obtains an exclusive lock on the collection. This will block all reads and writes on the collection until the operation finishes. When run on a secondary, the operation can block all other operations on that secondary until it finishes.


Validation has exclusive lock requirements that affect performance. Consider only running db.collection.validate() on nodes that are not servicing reads and writes.

To isolate the impact of the validation operation from client applications, run db.collection.validate() on a secondary node.

Convert a secondary node into a replica set hidden member and use the hidden node to further isolate the db.collection.validate() operation.


Convert the current primary node to a secondary node with rs.stepDown().

Starting in version MongoDB 4.4,

  • To validate a collection myCollection using the default settings (i.e. { full: false )

    db.myCollection.validate({ })
    db.myCollection.validate( { full: false } )
  • To perform a full validation of collection myCollection, specify full: true.

    db.myCollection.validate( { full: true } )

For details of the output, see Validate Output.