db.collection.validate()
带驱动程序的 MongoDB
本页面提供 mongosh
方法的相关信息。要查看 MongoDB 驱动程序中的等效方法,请参阅编程语言的相应页面:
说明
db.collection.validate(<documents>)
验证集合。 该方法扫描集合数据和索引以确保其正确性,并返回结果。 有关输出的详细信息,请参阅 验证输出。
从 5.0 版开始,
db.collection.validate()
方法还可以修复集合中的不一致性。索引不一致包括:
如果
db.collection.validate()
命令检测到任何不一致,系统将返回警告,然后将索引上的修复标志设置为true
。db.collection.validate()
还会验证任何违反集合模式验证规则的文档。db.collection.validate()
方法是对validate
命令的封装。
语法
db.collection.validate()
方法使用的语法如下:
db.collection.validate( { full: <boolean>, // Optional repair: <boolean> // Optional, added in MongoDB 5.0 } )
参数
db.collection.validate()
方法可以使用以下带有字段的可选文档参数:
字段 | 类型 | 说明 |
---|---|---|
布尔 | 可选。一个标志,确定该命令执行较慢但更彻底的检查还是执行更快但不太彻底的检查。
默认为 对于WiredTiger存储引擎,只有 | |
布尔 |
行为
性能
db.collection.validate()
方法可能会占用大量资源,并可能影响 MongoDB 实例的性能,尤其是在较大的数据集上。
db.collection.validate()
方法可获得对集合的独占锁。此操作会阻塞对集合的所有读写操作,直到完成为止。在辅助节点上运行时,该操作会阻塞该辅助节点上的所有其他操作,直到完成为止。
警告
验证具有独占锁要求,会影响主节点和为读取提供服务的从节点的性能。考虑仅在不支持读取或写入的节点上运行 db.collection.validate()
。
为了最大限度地减少对主节点的影响,集群中的大多数数据承载(非仲裁节点)投票节点必须可用,并且不得有明显的复制延迟。
尽量减少验证操作对客户端应用程序的影响,请在不处理读取请求的从节点上运行 db.collection.validate()
。您可以通过运行 rs.stepDown()
方法,将当前主节点转换为从节点。
要将 db.collection.validate()
操作与客户端流量完全隔离,请选择以下选项之一:
数据吞吐量指标
$currentOp
和 currentOp
命令包含用于正在进行的验证操作的 dataThroughputAverage
和 dataThroughputLastSecond
信息。
验证操作的日志消息包括 dataThroughputAverage
和 dataThroughputLastSecond
信息。
示例
要使用默认验证设置(特别是 full: false)验证集合
myCollection
:db.myCollection.validate() db.myCollection.validate({ }) db.myCollection.validate( { full: false } ) 要对集合
myCollection
执行全面验证,请指定 full: true:db.myCollection.validate( { full: true } ) 要修复集合
myCollection
,请指定 repair: true:db.myCollection.validate( { repair: true } )
有关输出的详细信息,请参阅“验证输出”。