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

MongoDBで一意のデータをランダム化する方法:EmailIdの値を「John」で始まる文字列に更新する

一意のデータをランダム化したい場合、MongoDBでは Math.random() を活用することで実現できます。本記事では、EmailId フィールドが null のドキュメントに対して、「John」で始まるランダムなメールアドレス形式の値を設定する手順を解説します。

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

まず、ドキュメントを含むコレクションを作成します。ここでは demo561 というコレクションに、EmailId が null のドキュメントを3件挿入します。

> db.demo561.insertOne({EmailId:null});{
    "acknowledged" : true, "insertedId" : ObjectId("5e8f490454b4472ed3e8e86c")
}
> db.demo561.insertOne({EmailId:null});{
    "acknowledged" : true, "insertedId" : ObjectId("5e8f490654b4472ed3e8e86d")
}
> db.demo561.insertOne({EmailId:null});{
    "acknowledged" : true, "insertedId" : ObjectId("5e8f490a54b4472ed3e8e86e")
}

2. 挿入したドキュメントの確認

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

> db.demo561.find();

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

{ "_id" : ObjectId("5e8f490454b4472ed3e8e86c"), "EmailId" : null }
{ "_id" : ObjectId("5e8f490654b4472ed3e8e86d"), "EmailId" : null }
{ "_id" : ObjectId("5e8f490a54b4472ed3e8e86e"), "EmailId" : null }

3. ランダムな値への更新クエリ

続いて、MongoDBで一意のデータをランダム化するためのクエリを見ていきましょう。forEach() で各ドキュメントを走査しながら、update()$set 演算子を使って EmailId を書き換えます。

> db.demo561.find().forEach(function(doc){
...     db.demo561.update({_id : doc._id}, {$set:{
...         EmailId:'John'+Math.random()*100000000000000000+'@'+Math.random()*100000000000000000+'.com'
...     }})
... })

このクエリでは、ローカル部分に「John」+乱数、ドメイン部分にも乱数を組み合わせることで、各ドキュメントに重複しないメールアドレス風の文字列が生成されます。

4. 更新結果の確認

再度 find() メソッドを実行して、コレクション内のすべてのドキュメントを表示します。

> db.demo561.find();

実行すると、次のように各ドキュメントの EmailId がランダムな値に更新されていることが確認できます。

{ "_id" : ObjectId("5e8f490454b4472ed3e8e86c"), "EmailId" : "John23607829153155868@62688631475897960.com" }
{ "_id" : ObjectId("5e8f490654b4472ed3e8e86d"), "EmailId" : "John63351292234094710@79460595429439740.com" }
{ "_id" : ObjectId("5e8f490a54b4472ed3e8e86e"), "EmailId" : "John71315584787457890@99884571221675000.com" }

まとめ

このように、forEach()Math.random() を組み合わせることで、既存のコレクション内の null 値やプレースホルダーとなっているフィールドに対して、一意かつランダムなデータを簡単に一括設定できます。テストデータの生成やマスキング処理など、さまざまな場面で応用できるテクニックです。

  1. 意外な組み合わせ:MongoDBとMySQLの共存戦略

    データストアの選択肢とその組み合わせの豊富さは、もはや「ワン・サイズ・フィッツ・オール(一つで全てに対応)」なデータストアの世界ではないことを証明しています。 今日では、SQLデータストア(MySQL、PostgreSQL、Oracle、SQL Serverなど)とNoSQLデータストア(MongoDB、CouchDB、Neo4jなど)を組み合わせて使う明確な理由があります。エンタープライズにおいてOracleが依然としてシステム・オブ・レコード(信頼性の高い基幹データベース)として好まれる存在である一方で、それが唯一の選択肢ではなくなりました。 開発者たちは、SQLとNoSQLを組み合わ

  2. AEMとMongoDBの連携徹底解説:MongoMKのアーキテクチャとマルチサイト運用の落とし穴

    MongoDBとは何か?MongoDBは、ドキュメント指向のNoSQLデータベースです。従来のリレーショナルモデル(RDBMS)から離れ、柔軟かつ水平スケール可能なデータ管理の仕組みを提供します。JSONライクなドキュメント形式(BSON)でデータを格納するため、構造が流動的なコンテンツやアプリケーション開発に適しており、Adobe Experience Manager(AEM)のような大規模コンテンツ管理プラットフォームとの組み合わせでも注目されてきました。 AEMとMongoDBはどのように連携するのか?AEMとMongoDBの連携は、crx3mongo ランモードと、JVMオプションの