Description描述
Changed in version 6.2.在版本6.2中的更改。
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从5.0版本开始,db.collection.validate()method can also fix inconsistencies in the collection.db.collection.validate()方法还可以修复集合中的不一致。Index inconsistencies include:指数不一致包括:An index is multikey but there are no multikey fields.索引是多键的,但没有多键字段。An index has multikeyPaths covering fields that are not multikey.索引具有覆盖非多键字段的multikeyPaths。An index does not have multikeyPaths but there are multikey documents (for indexes built before 3.4).索引没有multikeyPaths,但有多键文档(适用于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()命令检测到任何不一致,将返回警告,并将索引上的修复标志设置为true。db.collection.validate()also validates any documents that violate the collection's schema validation rules.还验证任何违反集合模式验证规则的文档。Thedb.collection.validate()method is a wrapper around thevalidatecommand.db.collection.validate()方法是validate命令的包装器。
Compatibility兼容性
This method is available in deployments hosted in the following environments:此方法在以下环境中托管的部署中可用:
- MongoDB Atlas
: The fully managed service for MongoDB deployments in the cloud:云中MongoDB部署的完全托管服务
Note
This command is supported in all MongoDB Atlas clusters. 所有MongoDB Atlas集群都支持此命令。For information on Atlas support for all commands, see Unsupported Commands.有关Atlas支持所有命令的信息,请参阅不支持的命令。
- MongoDB Enterprise
: The subscription-based, self-managed version of MongoDB:MongoDB的基于订阅的自我管理版本 - MongoDB Community
: The source-available, free-to-use, and self-managed version of MongoDB:MongoDB的源代码可用、免费使用和自我管理版本
Syntax语法
The db.collection.validate() method has the following syntax:db.collection.validate()方法具有以下语法:
db.collection.validate( {
full: <boolean>, // Optional
repair: <boolean>, // Optional, added in MongoDB 5.0
checkBSONConformance: <boolean> // Optional, added in MongoDB 6.2
} )
Parameters参数
The db.collection.validate() method can take the following optional document parameter with the fields:db.collection.validate()方法可以在字段中接受以下可选文档参数:
full |
| |
repair |
IMPORTANT:
| |
fixMultikey |
| |
checkBSONConformance |
|
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.db.collection.validate()方法可能是资源密集型的,可能会影响MongoDB实例的性能,特别是在较大的数据集上。
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.dbcollectionvalidate()方法获取集合的独占锁。这将阻止对集合的所有读写操作,直到操作完成。在辅助服务器上运行时,该操作可以阻止该辅助服务器上的所有其他操作,直到完成为止。
Warning
Validation has exclusive lock requirements that affect performance on primaries and on secondaries that are servicing reads. Consider only running 验证具有独占锁要求,这会影响为读取提供服务的主服务器和辅助服务器的性能。考虑只在不提供读写服务的节点上运行db.collection.validate() on nodes that are not servicing reads or writes.db.collection.validate()。
To minimize impact on the primary, the majority of the data-bearing (non-arbiter), voting members in the cluster must be available and must not have significant replication lag.为了尽量减少对主节点的影响,集群中的大多数数据承载(非仲裁器)投票成员必须可用,并且不得有明显的复制延迟。
To minimize the impact of the validation operation on client applications, run 为了尽量减少验证操作对客户端应用程序的影响,请在不处理读取请求的辅助节点上运行db.collection.validate() on a secondary node that is not servicing read requests. You can convert the current primary node to a secondary node, by running the rs.stepDown() method.db.collection.validate()。您可以通过运行rs.stepDown()方法将当前主节点转换为辅助节点。
To completely isolate the 要将db.collection.validate() operation from client traffic, choose one of the following options:db.collection.validate()操作与客户端流量完全隔离,请选择以下选项之一:
Isolate a replica set member by following the rolling maintenance procedure to temporarily remove it from the cluster.按照滚动维护过程将副本集成员从群集中临时删除,从而将其隔离。Convert a secondary node to a replica set hidden member and perform the validation on the hidden node.将辅助节点转换为副本集隐藏成员,并对隐藏节点执行验证。
Data Throughput Metrics数据吞吐量指标
The $currentOp and the currentOp command include dataThroughputAverage and dataThroughputLastSecond information for validate operations in progress.$currentOp和currentOp命令包含dataThroughputAverage和dataThroughputLastSecond信息,用于验证正在进行的操作。
The log messages for validate operations include 验证操作的日志消息包括dataThroughputAverage and dataThroughputLastSecond information.dataThroughputAverage和dataThroughputLastSecond信息。
Collection Validation Improvements集合验证改进
Starting in MongoDB 6.2, the 从MongoDB 6.2开始,validate command and db.collection.validate() method:validate命令和db.collection.validate()方法:
Check collections to ensure the BSON documents conform to the BSON specifications.检查集合,确保BSON文档符合BSON规范。Check time series collections for internal data inconsistencies.检查时间序列集合是否存在内部数据不一致。Have a new option有一个新的选项checkBSONConformancethat enables comprehensive BSON checks.checkBSONConformance,可以进行全面的BSON检查。
Examples示例
To validate a collection要使用默认验证设置(特别是myCollectionusing the default validation setting (specifically, full: false):full:false)验证集合myCollection,请执行以下操作:db.myCollection.validate()
db.myCollection.validate({ })
db.myCollection.validate( { full: false } )To perform a full validation of collection要对集合myCollection, specify full: true:myCollection执行完整验证,请指定full:true:db.myCollection.validate( { full: true } )To repair collection要修复集合myCollection, specify repair: true:myCollection,请指定repair:true:db.myCollection.validate( { repair: true } )To perform additional BSON conformance checks in要在myCollection, specify checkBSONConformance: true:myCollection中执行其他BSON一致性检查,请指定checkBSONConformance: true:db.myCollection.validate( { checkBSONConformance: true } )
For details of the output, see Validate Output.有关输出的详细信息,请参阅验证输出。