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.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Menu Docs

dbHash (comando de banco de dados)

dbHash

Retorna 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âncias mongod , 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.

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

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 aceita mais afterClusterTime. Como tal, 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")
}
}
}