validate

在本页面

Definition

Note

validate命令不支持views,并且针对视图运行时会引发错误。

该命令具有以下语法:

db.runCommand( {
   validate: <string>,          // Collection name
   full: <boolean>              // Optional
} )

该命令包含以下字段:

Field Type Description
validate string 要验证的集合的名称。
full boolean 可选的 。一个标志,确定命令是执行较慢但更彻底的检查还是执行较快但次要的检查。


如果是true,请执行更彻底的检查。
如果是false,则省略一些检查,以进行较快但较不彻底的检查。
默认为false
在版本 3.6 中更改。
从 MongoDB 3.6 开始,对于 WiredTiger 存储引擎,只有full验证过程将强制检查点并将所有内存中数据刷新到磁盘,然后再验证磁盘上的数据。
在以前的版本中,WT 存储引擎的数据验证过程始终强制使用检查点。

mongo shell 还提供了一个包装器db.collection.validate()

db.collection.validate();

Behavior

validate命令的速度可能很慢,尤其是在较大的数据集上。

validate命令在集合上获得独占锁W。这将阻止对集合的所有读取和写入,直到操作完成。在辅助节点上运行时,validate操作可以阻止该辅助节点上的所有其他操作,直到完成为止。

Note

由于validate扫描数据结构的方式,即使完全收集验证也无法检测到 MMAPv1 存储引擎数据文件上的所有损坏形式。

Examples

db.runCommand( { validate: "myCollection" } )
db.runCommand( { validate: "myCollection", full: true } )

Validate Output

validate会根据您使用的storage engine产生不同的输出。指定{validate: "<collName>", full: true }以获得更详细的输出。

MMAPv1WiredTiger存储引擎共有以下字段:

"keysPerIndex" : {
   "_id_" : <num>,
   "<index2_name>" : <num>,
   ...
}

从 3.6.13 开始,keysPerIndex仅通过索引名称标识索引。 MongoDB 的早期版本显示索引的完整名称空间。即<db>.<collection>.$<index_name>

"indexDetails" : {
   "_id_" : {
      "valid" : <boolean>
   },
   "<index2_name>" : {
      "valid" : <boolean>
   },
   ...
}

从 3.6.13 开始,

"extraIndexEntries" : [
   {
      "indexName" : <string>,
      "recordId" : <NumberLong>,  // for the non-existent document
      "indexKey" : {
         "<key1>" : <value>,
         ...
      }
   }
   ...
]

Note

对于extraIndexEntries数组,所有indexKey字段大小的总和限制为 1MB,其中大小包括indexKey的键和值。如果总和超过此大小,警告字段将显示一条消息。

从 MongoDB 3.6.13 开始可用

"missingIndexEntries" : [
   {
      "indexName" : <string>,
      "recordId" : <NumberLong>,
      "idKey" : <_id key value>,     // The _id value of the document. Only present if an ``_id`` index exists.
      "indexKey" : {                 // The missing index entry
         "<key1>" : <value>,
         ...
      }
   }
   ...
 ]

Note

对于missingIndexEntries数组,idKey字段大小及其所有indexKey字段大小的总和限制为 1MB,其中字段大小包括idKeyindexKey的键和值。如果总和超过此大小,警告字段将显示一条消息。

从 MongoDB 3.6.13 开始可用

以下字段特定于MMAPv1

MongoDB 创建新记录时,它将使用padding factor确定要添加到记录的额外空间。当 mongo 注意到更新操作正在触发记录移动时,填充因子将由 mongo 自动调整。

Note

仅当您指定full选项时,此字段才包括在验证输出中。

Note

仅当您指定full选项时,此字段才包括在验证输出中。

Note

仅当您指定full选项时,此字段才包括在验证输出中。

首页