Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs 菜单
Docs 主页
/ /

$hexHash(聚合表达式)

8.3版本新增

$hexHash

从 UTF-8 字符串或二进制数据 (BinData ) 生成并返回哈希值的大写十六进制字符串表示形式。要获取二进制数据而不是十六进制字符串,请使用$hash

$hexHash 通过以下语法实现:

{
$hexHash: {
input: <expression>,
algorithm: <string>
}
}
字段
类型
说明

input

必需。要哈希的值。必须解析为有效的 UTF-8 字符串或BinData

algorithm

字符串

必需。哈希算法。接受的值:

  • "md5"

  • "sha256"

  • "xxh64"

$hexHash 返回一个大写的十六进制字符串。输出的长度取决于算法:

算法
输出长度(字符)

"md5"

32

"sha256"

64

"xxh64"

16

如果 input 解析为 null 或未定义,或引用缺失字段,则 $hexHash 返回 null

如果input 解析为 UTF-8 字符串或BinData 以外的类型,$hexHash 将返回错误。

如果 algorithm 不是接受的值之一,$hexHash 将返回错误。

重要

MD5 不是一种加密安全算法,不适合安全敏感的应用程序。如果您要对敏感数据进行哈希处理,请改用 "sha256"

MD5 在 FIPS模式下也会被禁用。如果您的部署在启用 FIPS模式的情况下运行,请改用 "sha256""xxh64"

以下示例将名为 files 的集合与此文档一起使用:

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

以下示例计算 filename字段的 SHA-256 十六进制哈希值:

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

hexHash字段包含 64 个字符的大写十六进制字符串形式的 SHA-256 哈希值。要使用不同的算法,请更改 algorithm 值。示例,"xxh64" 会生成一个 16 个字符的字符串。

如果 inputnullinput 引用缺失字段,则 $hexHash 返回 null

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

后退

$hash

在此页面上