Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do Docs
/ /

$hash ( expressão de agregação )

Novidades na versão 8.3.

$hash

Gera e retorna um valor de hash binary (BinData) de uma string UTF-8 ou dados binary. Use $hash em um pipeline de agregação para calcular hashes binary para armazenamento, verificação ou comparação. Para obter uma string hexadecimal em vez de dados binary, use $hexHash.

$hash tem a seguinte sintaxe:

{
$hash: {
input: <expression>,
algorithm: <string>
}
}
Campo
Tipo
Descrição

input

Obrigatório. O valor para o qual calcular o hash. Deve resolver para uma string UTF-8 válida ou BinData.

algorithm

String

Obrigatório. O algoritmo de hash. Valores aceitos:

  • "md5"

  • "sha256"

  • "xxh64"

input Valor
Resultado
Notas

String UTF-8

Input deve ser uma string UTF-8 válida.

null, indefinido ou campo ausente

null

Se input resolver para null ou indefinido, ou se referir a um campo ausente, $hash retornará null.

Se input for resolvido para um tipo diferente de uma string UTF-8 ou BinData, $hash retornará um erro.

Se algorithm não for um dos valores aceitos, $hash retornará um erro.

Importante

O MD5 não é um algoritmo criptograficamente seguro e não é adequado para aplicativos sensíveis à segurança. Se você estiver fazendo hash de dados confidenciais, use "sha256" em vez disso.

MD5 também está desabilitado no modo FIPS. Se sua implantação for executada com o modo FIPS ativado, utilize "sha256" ou "xxh64".

Os seguintes exemplos utilizam uma coleção denominada files com estes documentos:

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

O exemplo a seguir calcula o hash SHA-256 do campo filename para cada document:

db.files.aggregate( [
{
$project: {
filename: 1,
hash: {
$hash: {
input: "$filename",
algorithm: "sha256"
}
}
}
}
] )
[
{
_id: 1,
filename: 'report.pdf',
hash: Binary.createFromBase64('ZGbkUKFrd7hlxYKda2xW2fiSlWR1ZC2+uczENA/gGxU=', 0)
},
{
_id: 2,
filename: 'archive.zip',
hash: Binary.createFromBase64('jsO6p+AcJW/43CrXux9Tpmq+hHLmCKPmqJjcARAsmVA=', 0)
}
]

O exemplo a seguir faz hash de um valor de string literal:

db.aggregate( [
{ $documents: [ { val: "hello" } ] },
{
$project: {
_id: 0,
hash: {
$hash: {
input: "$val",
algorithm: "xxh64"
}
}
}
}
] )
[
{
hash: Binary.createFromBase64('JseCfYifbaM=', 0)
}
]

O exemplo a seguir calcula o hash SHA-256 de um campo de dados binary:

db.binaries.insertMany( [
{ _id: 1, data: new BinData(0, "aGVsbG8=") }
] )
db.binaries.aggregate( [
{
$project: {
hash: {
$hash: {
input: "$data",
algorithm: "sha256"
}
}
}
}
] )
[
{
_id: 1,
hash: Binary.createFromBase64('LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=', 0)
}
]

Se input for null ou se referir a um campo ausente, $hash retornará null:

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

Voltar

$gte

Nesta página