dbHash
定义
注意
dbHash
命令在数据库上获取一个共享(S)锁,这会阻止写入直到命令完成。
兼容性
此命令在以下环境中托管的部署中可用
MongoDB Atlas:适用于云中MongoDB部署的完全托管服务
重要
此命令在M0、M2和M5集群或无服务器实例中不受支持。有关更多信息,请参阅不受支持的命令。
MongoDB Enterprise:基于订阅的自托管MongoDB版本
MongoDB Community:源代码可用的、免费使用并自托管的MongoDB版本
语法
该命令具有以下语法
db.runCommand( { dbHash: 1, collections: [ <collection1>, ... ] } )
命令字段
命令接受以下字段
字段 | 类型 | 描述 |
---|---|---|
dbHash | 任何类型 | 要运行的命令。指定任何值。 |
collections | 数组 | 可选。集合名称数组。 指定要返回哈希值的集合,或省略或指定空数组以返回数据库中所有集合的哈希值。 |
行为
不存在的集合
如果collections
数组中的集合不存在,则dbHash
不会为该集合返回哈希值。
限制
dbHash
命令不再支持afterClusterTime。因此,dbHash
无法与因果一致性会话相关联。
返回文档
该命令返回包含以下字段的文档
字段 | 描述 | |||||
---|---|---|---|---|---|---|
主机 | 运行命令的 mongod 实例的主机和端口。 | |||||
collections | 包含集合及其相应哈希值的文档。
| |||||
固定大小 | 列出固定大小集合的数组。 | |||||
uuids | 包含集合及其相应UUID值的文档。
| |||||
md5 | 这些集合的聚合哈希值。 | |||||
timeMillis | 生成哈希所需的毫秒数。 | |||||
ok operationTime $clusterTime | 随每个命令返回。有关详细信息,请参阅响应。 |
示例
返回数据库中所有集合的哈希值
以下示例返回数据库 test
中所有集合的哈希值。
use test db.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" : NumberLong("6567898567824900097") } } }
返回数据库指定集合的哈希值
以下示例返回数据库 test
中 inventory
和 orders
集合的哈希值。
use test db.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" : NumberLong("6567898567824900097") } } }