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 mongod, como entre nodos de sets de réplicas.

Advertencia

El comando dbHash obtiene un bloqueo compartido (S) sobre la base de datos, lo que impide escrituras 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. Una matriz con los nombres de las colecciones de la base de datos actual. Especifique cada colección solo por su nombre. No califique un nombre con la base de datos, como por ejemplo test.orders.

Para devolver los valores hash de todas las colecciones de la base de datos, especifique una matriz vacía.

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 array collections no existe, dbHash no devuelve un valor hash para esa colección. Un nombre calificado de base de datos como test.orders nunca coincide, porque dbHash compara cada entrada con los nombres de las colecciones en la base de datos actual.

Si ningún nombre en el array 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 los valores md5 entre implementaciones, confirme que el campo collections del documento de retorno enumera cada colección que espera.

El comando dbHash ya no admite afterClusterTime. Como tal, dbHash no puede asociarse 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")
}
}
}