带驱动程序的 MongoDB
本页介绍了mongosh
方法。要查看MongoDB驾驶员中的等效方法,请参阅您的编程语言的相应页面:
说明
db.collection.validate(<documents>)
验证集合。 该方法扫描集合数据和索引以确保其正确性,并返回结果。 有关输出的详细信息,请参阅 验证输出。
从 5.0 版开始,
db.collection.validate()
方法还可以修复集合中的不一致性。索引不一致包括:
如果
db.collection.validate()
命令检测到任何不一致,系统将返回警告,然后将索引上的修复标志设置为true
。db.collection.validate()
还会验证任何违反集合模式验证规则的文档。db.collection.validate()
方法是对validate
命令的封装。
兼容性
此方法可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
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()
。
从节点(secondary node from replica set)节点转换为副本集隐藏节点,并使用隐藏节点进一步隔离db.collection.validate()
操作。
提示
使用rs.stepDown()
将当前主节点 (primary node in the replica set)节点转换为从节点(secondary node from replica set)节点。
数据吞吐量指标
$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 } )
有关输出的详细信息,请参阅“验证输出”。