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.

$hexHash (expresión de agregación)

Nuevo en la versión 8.3.

$hexHash

Genera y devuelve una representación en forma de string hexadecimal en mayúsculas de un valor hash a partir de una string UTF-8 o datos binary (BinData). Para obtener datos binary en lugar de una cadena hexadecimal, usa $hash.

$hexHash tiene la siguiente sintaxis:

{ $hexHash: { input: <expression>, algorithm: <string> }}
Campo
Tipo
Descripción

input

Obligatorio. El valor a cifrar (hash). Debe resolver en una string UTF-8 válida o BinData.

algorithm

String

Obligatorio. El algoritmo de hash. Valores aceptados:

  • "md5"

  • "sha256"

  • "xxh64"

$hexHash devuelve una string hexadecimal en mayúsculas. La longitud del resultado depende del algoritmo:

algoritmo
Longitud de la salida (caracteres)

"md5"

32

"sha256"

64

"xxh64"

16

Si input se resuelve en null o indefinido, o se refiere a un campo ausente, $hexHash retorna null.

Si input se resuelve en un tipo diferente a una UTF-8 string o BinData, $hexHash devuelve un error.

Si algorithm no es uno de los valores aceptados, $hexHash devuelve un error.

Importante

MD5 no es un algoritmo criptográficamente seguro y no es adecuado para aplicaciones sensibles a la seguridad. Si estás aplicando hashing a información confidencial, usa "sha256" en su lugar.

MD5 también está deshabilitado en el modo FIPS. Si tu implementación se ejecuta con el modo FIPS habilitado, utiliza "sha256" o "xxh64" en su lugar.

Los siguientes ejemplos utilizan una colección denominada files junto con este document:

db.files.insertMany( [ { _id: 1, filename: "report.pdf" }] )

El siguiente ejemplo calcula el hash hexadecimal SHA-256 del campo filename:

db.files.aggregate( [ { $project: { filename: 1, hexHash: { $hexHash: { input: "$filename", algorithm: "sha256" } } } }] )
[ { _id: 1, filename: 'report.pdf', hexHash: '6466E450A16B77B865C5829D6B6C56D9F892956475642DBEB9CCC4340FE01B15' }]

El hexHash campo contiene la SHA-256 hash como una 64-carácter mayúsculas string hexadecimal. Para utilizar un algoritmo diferente, cambia el valor algorithm. Por ejemplo, "xxh64" produce una string de 16caracteres.

Si input es null, o input se refiere a un campo faltante, $hexHash devuelve null:

db.aggregate( [ { $documents: [ { val: null }, {} ] }, { $project: { hexHash: { $hexHash: { input: "$val", algorithm: "sha256" } } } }] )
[ { hexHash: null }, { hexHash: null }]