db.collection.validate()
On this page
MongoDB with drivers
This page documents a mongosh
method. To see the equivalent
method in a MongoDB driver, see the corresponding page for your
programming language:
Description
db.collection.validate(<documents>)
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.
Starting in version 5.0, the
db.collection.validate()
method can also fix inconsistencies in the collection.Index inconsistencies include:
An index is multikey but there are no multikey fields.
An index has multikeyPaths covering fields that are not multikey.
An index does not have multikeyPaths but there are multikey documents (for indexes built before 3.4).
If any inconsistencies are detected by the
db.collection.validate()
command, a warning is returned and the repair flag on the index is set totrue
.db.collection.validate()
also validates any documents that violate the collection's schema validation rules.The
db.collection.validate()
method is a wrapper around thevalidate
command.
Syntax
The db.collection.validate()
method has the following syntax:
db.collection.validate( { full: <boolean>, // Optional repair: <boolean> // Optional, added in MongoDB 5.0 } )
Parameters
The db.collection.validate()
method can take the
following optional document parameter with the fields:
Field | Type | Description |
---|---|---|
boolean | Optional. A flag that determines whether the command performs a slower but more thorough check or a faster but less thorough check.
The default is For the WiredTiger storage engine, only the | |
boolean | Optional. A flag that determines whether the command performs a repair.
The default is A repair can only be run on a standalone node. The repair fixes these issues:
For more information, see the New in version 5.0. |
Behavior
Performance
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.
Warning
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.
Tip
Convert the current primary node to a secondary node with
rs.stepDown()
.
Data Throughput Metrics
The $currentOp
and the currentOp
command
include dataThroughputAverage
and
dataThroughputLastSecond
information for
validate operations in progress.
The log messages for validate operations include
dataThroughputAverage
and dataThroughputLastSecond
information.
Examples
To validate a collection
myCollection
using the default validation setting (specifically, full: false):db.myCollection.validate() db.myCollection.validate({ }) db.myCollection.validate( { full: false } ) To perform a full validation of collection
myCollection
, specify full: true:db.myCollection.validate( { full: true } ) To repair collection
myCollection
, specify repair: true:db.myCollection.validate( { repair: true } )
For details of the output, see Validate Output.