Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

dbHash (comando de banco de dados)

dbHash

Returns the hash values of the collections in a database and an MD5 value for these collections. dbHash is useful to compare databases across mongod instances, such as across members of replica sets.

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.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem

Importante

Este 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

O comando tem a seguinte sintaxe:

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

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição

dbHash

qualquer tipo

O comando a executar. Especifique qualquer valor.

collections

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.

maxTimeMS

non-negative integer

Opcional.

Especifica um limite de tempo em milissegundos. Se você não especificar um valor para maxTimeMS, as operações não atingirão o tempo limite. Um valor 0 especifica explicitamente o comportamento ilimitado padrão.

O MongoDB encerra as operações que excedem o limite de tempo alocado usando o mesmo mecanismo de db.killOp(). O MongoDB só encerra uma operação em um de seus pontos de interrupção designados.

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.

O comando dbHash não suporta mais afterClusterTime. Dessa forma, dbHash não pode ser associada a sessões causalmente consistentes.

O comando retorna um documento com os seguintes campos:

Campo
Descrição

Anfitrião

O host e a porta da instância do mongod na qual o comando é executado.

collections

Um documento com as coleções e seus valores de hash correspondentes.

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

capped

Uma array que relaciona as coleções limitadas.

uuids

Um documento com as collections e seus valores UUID correspondentes.

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

md5

O valor de hash agregado para estas coleções.

timeMillis

Número de milissegundos para gerar o hash.

ok
operationTime
$clusterTime

Retornado com cada comando. Consulte também Resposta para obter detalhes.

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")
}
}
}

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")
}
}
}