对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

dbHash(数据库命令)

dbHash

返回数据库中集合的哈希值以及这些集合的 MD 5值。 dbHash可用于比较跨mongod实例的数据库,例如跨副本集节点的数据库。

警告

dbHash 命令在数据库上获得共享 (S) 锁,这会在命令完成之前禁止写入。

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

重要

M0 和 Flex 集群不支持此命令。有关更多信息,请参阅不支持的命令。

该命令具有以下语法:

db.runCommand( { dbHash: 1, collections: [ <collection1>, ... ] })

该命令接受以下字段:

字段
类型
说明

dbHash

任何类型

要运行的命令。可以指定任何值。

collections

阵列

可选。集合名称的数组。

指定要返回哈希值的集合,或者省略或指定一个空数组以返回数据库中所有集合的哈希值。

如果 collections 数组中的某个集合不存在,则 dbHash 不会返回该集合的哈希值。如 test.orders 这类的数据库合格名称永不匹配,因为 dbHash 会将每个条目与当前数据库中的集合名称进行比较。

如果 collections 数组中没有名称与集合匹配,或者集合存在但为空,则 dbHash 返回空输入的 md5 值,即 d41d8cd98f00b204e9800998ecf8427e。

注意

dbhash 的输出不区分不存在的集合和空集合。

在跨部署比较 md5 值之前,请确认返回文档的 collections 字段列出了您期望的每个集合。

dbHash 命令不再支持 afterClusterTime。因此,dbHash 不能与因果一致会话相关联。

此命令将返回一个包含以下字段的文档:

字段
说明

主机

运行命令的 mongod 实例的主机和端口。

collections

包含集合及其相应哈希值的文档。

{ <collection1>: <hash1>, <collection2>: <hash2>, ...}

capped

列出固定大小集合的数组。

uuids

包含集合及其相应 UUID 值的文档。

{ <collection1>: <UUID1>, <collection2>: <UUID2>, ...}

md5

这些集合的聚合哈希值。

timeMillis

生成哈希值所需的毫秒数。

ok
operationTime
$clusterTime

每个命令都会返回。详情另见响应。

以下示例返回数据库 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") } }}