AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

$ hexash(集計式)

バージョン8.3の新機能。

$hexHash

UTF-8 string または binary データ(BinData)からハッシュ値の大文字の16進数文字列表現を生成して返します。16進数文字列ではなくbinaryデータを取得するには、$hash を使用します。

$hexHash の構文は次のとおりです。

{ $hexHash: { input: <expression>, algorithm: <string> }}
フィールド
タイプ
説明

input

必須。ハッシュする値。有効な UTF-8 string または BinData に解決される必要があります。

algorithm

文字列

必須。ハッシュアルゴリズム。指定できる値は以下のとおりです。

  • "md5"

  • "sha256"

  • "xxh64"

$hexHash は、大文字の 16進数文字列を返します。出力の長さはアルゴリズムによって異なります。

アルゴリズム
出力の長さ(文字)

"md5"

32

"sha256"

64

"xxh64"

16

input が null または未定義に解決されるか、欠落しているフィールドを参照する場合、$hexHash は null を返します。

input が UTF-8 string または BinData 以外のタイプに解決される場合、$hexHash はエラーを返します。

algorithm が許容値の 1 つではない場合、$hexHash はエラーを返します。

重要

MD5 は暗号化された安全なアルゴリズムではないため、セキュリティに注意が必要なアプリケーションには適していません。機密データをハッシュしている場合は、代わりに "sha256" を使用します。

MD5 も FIPSモードでは無効になっています。配置が FIPSモードを有効にして実行されている場合は、代わりに "sha256" または "xxh64" を使用します。

次の例では、この document で files という名前のコレクションを使用します。

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

次の例では、filenameフィールドの SHA-256 16 進ハッシュを計算します。

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

hexHashフィールドには、SHA-256 ハッシュが 64 文字の大文字16進数文字列として含まれます。別のアルゴリズムを使用するには、algorithm の値を変更します。例、"xxh64" は 16 文字の string を生成します。

input が null であるか、input が欠落しているフィールドを参照している場合、$hexHash は null を返します。

db.aggregate( [ { $documents: [ { val: null }, {} ] }, { $project: { hexHash: { $hexHash: { input: "$val", algorithm: "sha256" } } } }] )
[ { hexHash: null }, { hexHash: null }]
このページを評価