MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBコレクションにMD5ハッシュ値を追加する方法

MongoDBでMD5ハッシュ値をコレクションに追加するには

MongoDBのコレクションにMD5ハッシュ値を追加するには、hex_md5() 関数を使用します。この関数を使うことで、パスワードなどの文字列をMD5形式のハッシュ値に変換して保存できます。

ここでは、実際にサンプルコレクションを作成しながら手順を解説します。

1. サンプルコレクションの作成

まず、ドキュメントを含むコレクションを作成します。

> db.addMd5HashValueDemo.insertOne({"UserName":"Adam","UserPassword":"Adam123456"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd6a4c66d78f205348bc619")
}
> db.addMd5HashValueDemo.insertOne({"UserName":"Chris","UserPassword":"Chris_121#"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd6a4e46d78f205348bc61a")
}

2. 登録済みドキュメントの確認

find() メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。

> db.addMd5HashValueDemo.find();

上記のクエリを実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5cd6a4c66d78f205348bc619"), "UserName" : "Adam", "UserPassword" : "Adam123456" }
{ "_id" : ObjectId("5cd6a4e46d78f205348bc61a"), "UserName" : "Chris", "UserPassword" : "Chris_121#" }

3. hex_md5() でハッシュ値を追加する

次に、forEach() を使って各ドキュメントを走査し、hex_md5() 関数でパスワードのMD5ハッシュ値を計算して、新しいフィールドとして保存します。

> db.addMd5HashValueDemo.find().forEach( function(documentPass){
   documentPass.Value = hex_md5(documentPass.UserPassword);
   db.addMd5HashValueDemo.save(documentPass);
});

この処理では、各ドキュメントの UserPassword フィールドの値を hex_md5() に渡し、その結果を Value フィールドに格納した後、save() メソッドでドキュメントを更新しています。

4. 結果の確認

処理完了後、再度ドキュメントを確認してみましょう。

> db.addMd5HashValueDemo.find();

実行結果は以下のようになります。

{ "_id" : ObjectId("5cd6a4c66d78f205348bc619"), "UserName" : "Adam", "UserPassword" : "Adam123456", "Value" : "6523857c2bf79b63fd5fa0322575f7be" }

{ "_id" : ObjectId("5cd6a4e46d78f205348bc61a"), "UserName" : "Chris", "UserPassword" : "Chris_121#", "Value" : "3391ccbe33624258cafa23aa50301615" }

このように、各ドキュメントに Value フィールドが追加され、パスワードに対応するMD5ハッシュ値が保存されていることが確認できます。

補足:セキュリティに関する注意点

MD5は現在では衝突耐性に弱点があるため、実運用でパスワードを保護する目的で使用することは推奨されていません。本番環境では、bcrypt や Argon2 など、より安全なハッシュアルゴリズムを採用することをおすすめします。MD5はデータの整合性チェックや学習用途などに適しています。

  1. MongoDBで配列の値を使ってコレクションを並べ替える方法

    MongoDBのコレクションを配列の値を基準にソートしたい場合は、aggregate()メソッドと $sort ステージを組み合わせて使用します。さらに、配列を個々のドキュメントに分解するために $unwind も活用します。 サンプルコレクションの作成 まず、ドキュメントを含むコレクションを作成しましょう。ここでは、学生ごとの詳細情報(名前とスコア)を配列として持つドキュメントを挿入します。 > db.demo577.insertOne( ... { ... student: { ... details: [ ... { .

  2. C#のOrderedDictionaryコレクションにキーと値を追加する方法

    C#のOrderedDictionaryコレクションにキーと値を追加するには、Add()メソッドを使用します。このメソッドは2つの引数を受け取ります。第1引数はキー、第2引数は対応する値です。 OrderedDictionaryの特徴は、要素を追加した順序を保持しながら、キーによるアクセスも可能な点です。通常のHashtableとは異なり、挿入順序が保証されるため、順序が重要なシナリオで活用できます。 基本的な使い方 以下のコードでは、2つのOrderedDictionaryを作成し、それぞれにキーと値を追加した後、内容を表示して等価性を確認しています。 using System; using