合成データの生成
実際のデータのスキーマに合わせた合成データを生成できます。 合成データは、テストおよび開発環境に役立ちます。
このチュートリアルでは、Atlas クラスターに接続し、Node.js と facer.js を使用して合成データを生成します。 。詳細については、 「 FakerJavaScriptDocs 」 を参照してください。
前提条件
このチュートリアルの手順を使用して合成データを作成するには、次の手順を実行する必要があります。
データのロード先となる Atlas クラスターを作成します。 詳しくは、 クラスター タイプ を参照してください。
fail.js をインストールします。
npm install --save-dev @faker-js/faker
手順
クラスターで合成データを生成するには、次の手順に従います。
Node.js アプリを作成します。
次のコマンドを実行して、アプリの ディレクトリを作成し、移動します。
mkdir syntheticdata cd syntheticdata 次のコマンドを実行してプロジェクトを初期化し、
npm
にリンクします。npm init entry point: (index.js)
を除くすべてのデフォルト値を受け入れるには、Enter
を押します。 ターミナルがentry point: (index.js)
を返したら、このテキストを入力し、Enter
を押します。myapp.js すべてのデフォルト値を受け入れ、プロンプトが表示されたら
Yes
と入力します。次のコマンドを実行して、ウェブ アプリケーション フレームワークである
express
をインストールします。npm install express --save 作成したディレクトリに、
myapp.js
という名前のファイルを作成します。
合成データを生成するためのコードを追加します。
myapp.js
ファイルに次のコードを追加します。 次のプレースホルダー値を自分の値に置き換え、ファイルの内容を保存します。
<YOUR-ATLAS-URI>
:Atlas クラスターの接続文字列。接続文字列を見つける方法については、「 MongoDB Atlas 接続文字列を見つける 」を参照してください。<DATABASE-NAME>
: Atlas で作成するデータベースの名前。<COLLECTION-NAME>
: Atlas で作成するコレクションの名前。
// require the necessary libraries const { faker } = require("@faker-js/faker"); const MongoClient = require("mongodb").MongoClient; function randomIntFromInterval(min, max) { // min and max included return Math.floor(Math.random() * (max - min + 1) + min); } async function seedDB() { // Connection URL const uri = "<YOUR-ATLAS-URI>"; const client = new MongoClient(uri); try { await client.connect(); console.log("Connected correctly to server"); const collection = client.db("<DATABASE-NAME>").collection("<COLLECTION-NAME>"); // make a bunch of time series data let timeSeriesData = []; for (let i = 0; i < 5000; i++) { const firstName = faker.person.firstName(); const lastName = faker.person.lastName(); let newDay = { timestamp_day: faker.date.past(), cat: faker.lorem.word(), owner: { email: faker.internet.email({firstName, lastName}), firstName, lastName, }, events: [], }; for (let j = 0; j < randomIntFromInterval(1, 6); j++) { let newEvent = { timestamp_event: faker.date.past(), weight: randomIntFromInterval(14,16), } newDay.events.push(newEvent); } timeSeriesData.push(newDay); } await collection.insertMany(timeSeriesData); console.log("Database seeded with synthetic data! :)"); } catch (err) { console.log(err.stack); } } seedDB();
たとえば、コードには、 synthetic-data-db
という名前のデータベースとsynthetic-data-collection
という名前のコレクションを指定する次の行が含まれます。
const collection = client.db("synthetic-data-db").collection("synthetic-data-collection");
このコードは、犬に関する時系列コレクションを作成し、各ドキュメントに次のフィールドを追加して、 faker.js の合成データをフィールドに入力します。
timestamp_day
cat
owner.email
owner.firstName
owner.lastName
events
コード内のフィールドと値を、データと一致するフィールドと値に置き換えることができます。 false で利用可能なフィールドの詳細については、次を参照してください。 、詳しくは、 Faker API リファレンス を参照してください。
Atlas Atlasで、プロジェクトの {0 ページにGoします。GoClusters
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの Clusters をクリックしてください。
[ Clusters (クラスター) ] ページが表示されます。
Collectionsページに移動します。
クラスターの [Browse Collections] ボタンをクリックします。
Data Explorerが表示されます。