定义
警告
dbHash 命令在数据库上获得共享 (S) 锁,这会在命令完成之前禁止写入。
兼容性
此命令可用于以下环境中托管的部署:
- MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M0 和 Flex 集群不支持此命令。有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { dbHash: 1, collections: [ <collection1>, ... ] })命令字段
该命令接受以下字段:
字段 | 类型 | 说明 |
|---|---|---|
| 任何类型 | 要运行的命令。可以指定任何值。 |
| 阵列 | 可选。集合名称的数组。 指定要返回哈希值的集合,或者省略或指定一个空数组以返回数据库中所有集合的哈希值。 |
行为
不存在的集合
如果 collections 数组中的某个集合不存在,则 dbHash 不会返回该集合的哈希值。如 test.orders 这类的数据库合格名称永不匹配,因为 dbHash 会将每个条目与当前数据库中的集合名称进行比较。
如果 collections 数组中没有名称与集合匹配,或者集合存在但为空,则 dbHash 返回空输入的 md5 值,即 d41d8cd98f00b204e9800998ecf8427e。
注意
dbhash 的输出不区分不存在的集合和空集合。
在跨部署比较 md5 值之前,请确认返回文档的 collections 字段列出了您期望的每个集合。
限制
dbHash 命令不再支持 afterClusterTime。因此,dbHash 不能与因果一致会话相关联。
returnDocument
此命令将返回一个包含以下字段的文档:
示例
返回数据库中的所有集合的哈希值
以下示例返回数据库 test 中所有集合的哈希值:
use testdb.runCommand( { dbHash: 1 } )该操作将返回以下文档:
{ "host" : "myHostName.local:27017", "collections" : { "foo" : "d27b769230edc551d869060ec3fb68bd", "inventory" : "ec3d821581ea1bd3aa8196c94b946874", "log" : "d41d8cd98f00b204e9800998ecf8427e", "orders" : "0242c0a128c284ea9576a34db2306c12", "restaurants" : "5dc9b88091c36f0d529567b5b6e3fc92", "zipcodes" : "31ede812bf397509a87359c65bf2a08c" }, "capped" : [ "log" ], "uuids" : { "foo" : UUID("469592fe-3bfe-425e-975f-cedbe0c4741d"), "inventory" : UUID("0830e0ad-cc24-4fc7-80d0-8e22fe45e382"), "log" : UUID("4be024ff-711b-4ab8-836b-dee662e090f1"), "orders" : UUID("755be489-745f-400c-ac3b-f27525ad0108"), "restaurants" : UUID("520b56ec-3276-4904-b6e5-286bc9bfa648"), "zipcodes" : UUID("12e97b70-c174-40af-a178-5d83a241fe20") }, "md5" : "0cb7417ae9d9eb865000b4debdc671da", "timeMillis" : 53, "ok" : 1, "operationTime" : Timestamp(1529208582, 4), "$clusterTime" : { "clusterTime" : Timestamp(1529208582, 4), "signature" : { "hash" : BinData(0,"X3MmevDqUgCVvN1AhnT+fiOL/Lc="), "keyId" : Long("6567898567824900097") } }}返回数据库中指定集合的哈希值
以下示例返回数据库 test 中集合 inventory 和 orders 的哈希值:
use testdb.runCommand( { dbHash: 1, collections: [ "inventory", "orders" ] } )该操作将返回以下文档:
{ "host" : "myHostName.local:27017", "collections" : { "inventory" : "ec3d821581ea1bd3aa8196c94b946874", "orders" : "0242c0a128c284ea9576a34db2306c12" }, "capped" : [ ], "uuids" : { "inventory" : UUID("0830e0ad-cc24-4fc7-80d0-8e22fe45e382"), "orders" : UUID("755be489-745f-400c-ac3b-f27525ad0108") }, "md5" : "cb4676f316ff2ff29c701a5edd18afe3", "timeMillis" : 0, "ok" : 1, "operationTime" : Timestamp(1529208801, 1), "$clusterTime" : { "clusterTime" : Timestamp(1529208801, 1), "signature" : { "hash" : BinData(0,"I4z4a4Mgs+tcx0MP5xIU8DYAMB0="), "keyId" : Long("6567898567824900097") } }}