Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

dbHash (comando de base de datos)

dbHash

Devuelve los valores hash de las colecciones en una base de datos y un valor MD5 para estas colecciones. dbHash es útil para comparar bases de datos entre instancias de mongod, como entre nodos de set de réplicas.

Advertencia

El comando dbHash obtiene un bloqueo compartido (S) sobre la base de datos, lo que impide guardados hasta que el comando se complete.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Importante

Este comando no es compatible con los clústeres M0 y Flex. Para obtener más información, consulta Comandos no compatibles.

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El comando tiene la siguiente sintaxis:

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

El comando toma los siguientes campos:

Campo
Tipo
Descripción

dbHash

cualquier tipo

El comando para ejecutar. Especifica cualquier valor.

collections

arreglo

opcional. Un arreglo de nombres de colección.

Puede especificar las colecciones para las cuales regresar los valores hash, omitir o especificar un arreglo vacío para regresar los valores hash para todas las colecciones en la base de datos.

maxTimeMS

non-negative integer

Opcional.

Especifica un límite de tiempo en milisegundos. Si no especifica un valor para maxTimeMS, las operaciones no agotarán el tiempo de espera. Un valor de 0 especifica explícitamente el comportamiento por defecto sin límites.

MongoDB finaliza las operaciones que exceden su límite de tiempo asignado utilizando el mismo mecanismo que db.killOp(). MongoDB solo termina una operación en uno de sus puntos de interrupción designados.

Si una colección en el arreglo collections no existe, dbHash no devuelve un valor hash para esa colección. Un nombre calificado por la base de datos, como test.orders, nunca coincide, porque dbHash compara cada entrada con los nombres de las colecciones de la base de datos actual.

Si ningún nombre en el arreglo collections coincide con una colección o si existe una colección pero está vacía, dbHash devuelve el valor md5 de una entrada vacía, d41d8cd98f00b204e9800998ecf8427e.

Nota

La salida de dbhash no distingue entre colecciones inexistentes y colecciones vacías.

Antes de comparar valores de md5 en las implementaciones, confirme que el campo collections del documento de retorno enumera cada colección que espera.

El comando dbHash ya no admite afterClusterTime. Por lo tanto, dbHash no se puede asociar con sesiones causalmente coherentes.

El comando devuelve un documento con los siguientes campos:

Campo
Descripción

host

El host y el puerto de la instancia mongod en la que se ejecuta el comando.

collections

Un documento con las colecciones y sus valores hash correspondientes.

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

capped

Un arreglo que enumera las colecciones con tamaño fijo.

uuids

Un documento con las colecciones y sus valores UUID correspondientes.

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

md5

El valor hash acumulado para estas colecciones.

timeMillis

Número de milisegundos para generar el hash.

ok
operationTime
$clusterTime

Se devuelve con cada comando. Consulta también Respuesta para más detalles.

El siguiente ejemplo devuelve el valor hash para todas las colecciones en la base de datos test:

use test
db.runCommand( { dbHash: 1 } )

La operación devuelve el siguiente 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")
}
}
}

El siguiente ejemplo devuelve el valor hash para las colecciones inventory y orders en la base de datos test:

use test
db.runCommand( { dbHash: 1, collections: [ "inventory", "orders" ] } )

La operación devuelve el siguiente 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")
}
}
}