Definição
dbHashRetorna os valores de hash das collections em um banco de dados de dados e um valor MD5 para essas collections.
dbHashé útil para comparar bancos de dados entre instânciasmongod, como entre membros de conjuntos de réplicas.
Aviso
O comando dbHash obtém um bloqueio compartilhado (S) no banco de dados, o que impede gravações até que o comando seja concluÃdo.
Compatibilidade
Esse comando está disponÃvel em implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Importante
Esse comando não é suportado em clusters M0 e Flex. Para obter mais informações, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponÃvel, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O comando tem a seguinte sintaxe:
db.runCommand( { dbHash: 1, collections: [ <collection1>, ... ], maxTimeMS: <integer> } )
Campos de comando
O comando utiliza os seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
| qualquer tipo | O comando a executar. Especifique qualquer valor. |
| array | Opcional. Uma array de nomes de coleções. Especifique as collections para gerar os valores de hash, ou omita ou especifique uma array vazia para gerar os valores de hash para todas as collections no banco de dados. |
| non-negative integer | Opcional. Especifica um limite de tempo em milissegundos. Se você não especificar um valor para O MongoDB encerra as operações que excedem o limite de tempo alocado usando o mesmo mecanismo de |
Comportamento
Coleção não existente
Se uma coleção na array collections for inexistente, dbHash não retornará um valor de hash para essa coleção. Um nome qualificado para banco de dados, como test.orders, nunca corresponde, porque dbHash compara cada entrada com os nomes de coleção no banco de dados atual.
Se nenhum nome na array collections corresponder a uma collection ou se uma collection existir, mas estiver vazia, dbHash retornará o valor md5 de uma entrada vazia, d41d8cd98f00b204e9800998ecf8427e.
Observação
A saÃda de dbhash não distingue entre collections inexistentes e collections vazias.
Antes de comparar os valores md5 entre os sistemas, confirme se o campo collections do documento de retorno lista cada collection que você espera.
Restrições
O comando dbHash não aceita mais afterClusterTime. Como tal, dbHash não pode ser associada a sessões causalmente consistentes.
documento de devolução
O comando retorna um documento com os seguintes campos:
Campo | Descrição | |||||
|---|---|---|---|---|---|---|
Anfitrião | O host e a porta da instância do | |||||
| Um documento com as coleções e seus valores de hash correspondentes. | |||||
| Uma array que relaciona as coleções limitadas. | |||||
| Um documento com as collections e seus valores UUID correspondentes. | |||||
| O valor de hash agregado para estas coleções. | |||||
| Número de milissegundos para gerar o hash. | |||||
| Retornado com cada comando. Consulte também Resposta para obter detalhes. |
Exemplos
Gerar valores de hash para todas as collections em um banco de dados
O exemplo a seguir retorna o valor de hash para todas as coleções no banco de dados test:
use test db.runCommand( { dbHash: 1 } )
A operação retorna o seguinte documento:
{ "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") } } }
Valores hash retornados para collections especÃficas em um banco de dados
O exemplo a seguir retorna o valor de hash para as collections inventory e orders no banco de dados test:
use test db.runCommand( { dbHash: 1, collections: [ "inventory", "orders" ] } )
A operação retorna o seguinte documento:
{ "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") } } }