- Reference >
- Database Commands >
- Diagnostic Commands >
- validate
validate¶
On this page
Definition¶
-
validate¶ The
validatecommand checks a collection’s data and indexes for correctness and returns the results.Starting in version 5.0, the
validatecommand can also find inconsistencies in the collection and fix them if possible.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 inmongoshprovides a wrapper aroundvalidate.
Syntax¶
Changed in version 5.0.
The command has the following syntax:
mongosh also provides a wrapper
db.collection.validate().
Command Fields¶
The command takes the following fields:
| Field | Type | Description |
|---|---|---|
validate |
string | The name of the collection to validate. |
| full | 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 Starting in MongoDB 3.6, for the WiredTiger storage engine, only the
In previous versions, the data validation process for the WT storage engine always forces a checkpoint. |
| repair | 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:
See also
New in version 5.0. |
| metadata | boolean | Optional. A flag which allows users to perform a quick validation to detect invalid index options without scanning all of the documents and indexes.
The default is Running the validate command with The
The If there is an invalid index detected, the validate command will prompt
you to use the New in version 5.0.4. |
Behavior¶
Performance¶
The validate command can be slow, particularly on
larger data sets.
The validate command obtains an exclusive lock W on
the collection. This will block all reads and writes on the collection
until the operation finishes. When run on a secondary, the
validate operation can block all other operations on that
secondary until it finishes.
Warning
Due to the performance impact of validation, consider running
validate only on secondary replica set nodes.
You can use rs.stepDown() to instruct the current
primary node to become a secondary to avoid impacting a live
primary node.
Data Throughput Metrics¶
Starting in version MongoDB 4.4,
- The
$currentOpand thecurrentOpcommand includedataThroughputAverageanddataThroughputLastSecondinformation for validate operations in progress. - The log messages for validate operations include
dataThroughputAverageanddataThroughputLastSecondinformation.
Restrictions¶
MongoDB drivers automatically set afterClusterTime for operations associated with causally
consistent sessions. Starting in MongoDB 4.2, the
validate command no longer supports afterClusterTime. As such, validate cannot be
associated with causally consistent sessions.
Examples¶
To validate a collection
myCollectionusing the default validation setting (specifically, full: false):To perform a full validation of collection
myCollection, specify full: true:To repair collection
myCollection, specify repair: true:To validate the metadata in the
myCollectioncollection, specify metadata: true:
Validate Output¶
Note
The output may vary depending on the version and specific configuration of your MongoDB instance.
Specify full: true for more detailed output.
-
validate.nInvalidDocuments¶ The number of invalid documents in the collection.
-
validate.nNonCompliantDocuments¶ The number of documents not conforming to the collection’s schema.
-
validate.nIndexes¶ The number of indexes on the collection.
-
validate.keysPerIndex¶ A document that contains the name and index entry count for each index on the collection.
Starting in MongoDB 4.2 (and 4.0.10+ and 3.6.13+),
keysPerIndexidentifies the index by its name only. Earlier versions of MongoDB displayed the full namespace of the index; i.e.<db>.<collection>.$<index_name>
-
validate.indexDetails¶ A document that contains the status of the index validation for each index.
Starting in MongoDB 4.2 (and 4.0.10+ and 3.6.13+),
indexDetailsidentifies the specific index (or indexes) that is invalid. Earlier versions of MongoDB would mark all indexes as invalid, if any of the indexes were invalid.indexDetailsidentifies the index by its name only. Earlier versions of MongoDB displayed the full namespace of the index; i.e.<db>.<collection>.$<index_name>.
-
validate.ns¶ The full namespace name of the collection. Namespaces include the database name and the collection name in the form
database.collection.
-
validate.valid¶ A boolean that is
trueifvalidatedetermines that all aspects of the collection are valid. Whenfalse, see theerrorsfield for more information.
-
validate.warnings¶ An array that contains warning messages, if any, regarding the validate operation itself. The warning messages do not indicate that the collection is itself invalid. For example:
-
validate.errors¶ If the collection is not valid (i.e
validis false), this field will contain a message describing the validation error.
-
validate.extraIndexEntries¶ An array that contains information for each index entry that points to a document that does not exist in the collection.
Note
For the
extraIndexEntriesarray, the sum of all theindexKeyfield sizes has a limit of 1MB where the sizes include both the keys and values for theindexKey. If the sum exceeds this size, the warning field displays a message.Available starting in MongoDB 4.2 (and 4.0.10+ and 3.6.13+)
-
validate.missingIndexEntries¶ An array that contains information for each document that is missing the corresponding index entry.
Note
For the
missingIndexEntriesarray, the sum of theidKeyfield size and all itsindexKeyfield sizes has a limit of 1MB where the field sizes include both the keys and values for theidKeyandindexKey. If the sum exceeds this size, the warning field displays a message.Available starting in MongoDB 4.2 (and 4.0.10+ and 3.6.13+)
-
validate.corruptRecords¶ An array of
RecordIdvalues for documents that are unreadable, possibly because the data is damaged. These documents are reported as corrupt during validation. ARecordIdis a 64-bit integer internal key that uniquely identifies a document in a collection.New in version 5.0.